有没有办法使用Python进行反向查找,以检查在共享主机中共享相同IP地址的网站列表?
一些网站提供了此目的的工具。
技术上,你可以使用DNSPython进行反向查询。
使用Pip安装它。
$ pip install dnspython
然后执行反向查询:
>>> from dns import resolver
>>> from dns import reversename
>>> addr = reversename.from_address("74.125.227.114")
>>> resolver.query(addr, "PTR")[0]
<DNS IN PTR rdata: dfw06s16-in-f18.1e100.net.>
socket.gethostbyaddr
您还可以使用 socket.gethostbyaddr
函数。
>>> import socket
>>> name, alias, addresslist = socket.gethostbyaddr('192.30.252.130')
>>> name
'ip1c-lb3-prd.iad.github.com'
注意,在使用gethostbyaddr
时,你需要检查是否出现socket.herror
异常。
如果要查找托管在特定IP上的网站,这在共享主机环境下可能效果不佳。它可能只会告诉你提供者信息,而非网站信息:
14:38:43 ~/code/tmp$ ping mozeyondown.com
PING mozeyondown.com (173.203.99.161): 56 data bytes
64 bytes from 173.203.99.161: icmp_seq=0 ttl=56 time=40.924 ms
现在让我们查找那个地址
14:38:54 ~/code/tmp$ dig +noall +answer -x 173.203.99.161
161.99.203.173.in-addr.arpa. 86053 IN PTR 173-203-99-161.static.cloud-ips.com.
通过 Python 查找
>>> import socket
>>> name, alias, addresslist = socket.gethostbyaddr('173.203.99.161')
>>> name
'173-203-99-161.static.cloud-ips.com'
对于使用DNSPython同样适用。
google.com
的A记录之一指向74.125.228.97
,但该IP的反向DNS条目为iad23s08-in-f1.1e100.net
。 - netcoder