我的路由器日志记录了 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