Python 从 IP 查找主机名,超时 1 秒

Posted

技术标签:

【中文标题】Python 从 IP 查找主机名,超时 1 秒【英文标题】:Python lookup hostname from IP with 1 second timeout 【发布时间】:2011-02-04 06:26:24 【问题描述】:

如何在给定 IP 地址的情况下查找主机名?此外,如果不存在这样的反向 DNS 条目,我如何指定超时?试图让事情尽可能快。或者,还有更好的方法?谢谢!

【问题讨论】:

【参考方案1】:
>>> import socket
>>> socket.gethostbyaddr("69.59.196.211")
('***.com', ['211.196.59.69.in-addr.arpa'], ['69.59.196.211'])

为了实现函数的超时,this *** thread 对此有答案。

【讨论】:

像 'http:/1.0.1.0/blah/blahm.html' 这样的东西呢? @Eiyrioü von Kauyf:这不是问题所在(指定 IP 地址时返回主机名)。 这是同一个问题 - 但是我问你有没有建议的方法来规范化它并执行 socket.gethostbyaddr("1.0.1.0") 之类的?这是同一个问题,但输入格式不同 - gethostbyaddr 不喜欢非规范化输入。 @EiyrioüvonKauyf 是的,因为它正是该方法应该做的:ip 到 dns 的转换......你可以使用像 http(|s)://([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/.* 这样的正则表达式。还有更多,更好或更精确的 socket 有自己的方法来设置超时时间:docs.python.org/2/library/socket.html#socket.socket.settimeout【参考方案2】:

您尝试完成的操作称为反向 DNS 查找。

socket.gethostbyaddr("IP") 
# => (hostname, alias-list, IP)

http://docs.python.org/library/socket.html?highlight=gethostbyaddr#socket.gethostbyaddr

但是,对于超时部分,我读到有人遇到过这个问题。我会查看PyDNS 或this 解决方案以获得更高级的治疗。

【讨论】:

以上是关于Python 从 IP 查找主机名,超时 1 秒的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?

我可以使用客户端 Javascript 执行 DNS 查找(主机名到 IP 地址)吗?

从IP地址获取主机名

python 使用socket 获得主机名和IP

AIX如何获取主机名

Admin——配置网络yum软件包管理文本文件查找