如何在Python中执行反向DNS查找?

5

有没有办法使用Python进行反向查找,以检查在共享主机中共享相同IP地址的网站列表?

一些网站提供了此目的的工具。


2
这是无法通过反向DNS实现的。您需要一个将主机名与IP地址匹配的数据库,然后按IP地址进行搜索。反向DNS搜索在PTR记录中进行。大多数域名只有一个记录,并且不一定是托管的域名。例如,google.com的A记录之一指向74.125.228.97,但该IP的反向DNS条目为iad23s08-in-f1.1e100.net - netcoder
我认为我应该使用Python和另一个API来完成这个任务。 - 4m1nh4j1
1个回答

13

DNSPython

技术上,你可以使用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同样适用。


我认为要求一个工具以获取在1个共享主机IP中托管的所有域名列表是有必要的,例如类似于bing的工具:https://www.bing.com/search?q=IP:87.98.235.184还可以使用其他付费服务,如:1. yougetsignal网站上的网络服务器工具 2. hackertarget反向IP查找。 - Anass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接