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 的主机名?