从 IP 地址列表中查找 URL

从 IP 地址列表中查找 URL

我的路由器日志记录了 IP 地址的活动,但我想查看相应的 URL 地址。有没有办法批量/批量地从 IP 中获取 URL,而不必手动/逐行逐行地执行此操作?

答案1

如果你有一个列表,你可以在任何操作系统上轻松使用Python的内置socket模块。

import socket
socket.gethostbyaddr('198.252.206.16')

返回:

('stackoverflow.com', ['16.206.252.198.in-addr.arpa'], ['198.252.206.16'])

所以 scriptifything 一点也不难,只需在文件中每行写一个 ip,然后执行以下操作:

import socket

fi = open('iplist.txt')
for line in fi.readlines():
    print( socket.gethostbyaddr( line )[0] )
fi.close()

当然,如果您愿意的话,您可以调整输出以将 IP 和域名写入另一个文件。

但是,正如@ScottChamberlain 指出的那样 - 对于共享 IP(包括子域名等)的站点,这可能并不总是能解决。

答案2

ips.txt假设您有一个包含 IP 地址列表的文本文件:

$ cat ips.txt | xargs host

或者你可以编写一个优雅的 bash 脚本来格式化结果:

for ip in $(cat ips.txt); do
    domain_names=$(host $ip | grep "domain name" | awk '{print $5}' | tr ".\\n" " ")

    # test first char of domain names
    if [ -n ${domain_names:0:1} ]; then
        echo "$ip $domain_names" 
    else
        echo "$ip not found"
    fi
done

相关内容