whois.whois函数总是得到一个超时错误。起初,我认为这是因为我的项目是用Python2.7编写的,但我也签了3.7并得到了相同的错误。我检查了使用whois的在线网站上的地址,链接成功了,但没有收到这个错误。有人知道为什么会这样吗?
import whois
w = whois.whois("https://stackoverflow.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python37\lib\site-packages\whois\__init__.py", line 43, in whois
text = nic_client.whois_lookup(None, domain.encode('idna'), flags)
File "C:\Program Files\Python37\lib\site-packages\whois\whois.py", line 264, in whois_lookup
result = self.whois(query_arg, nichost, flags)
File "C:\Program Files\Python37\lib\site-packages\whois\whois.py", line 142, in whois
s.connect((hostname, 43))
socket.timeout: timed out发布于 2019-10-26 19:45:08
您的代码至少有两个问题,您可能也有网络问题。
但是,它没有理由不在Python2上工作。
关于代码
这是非常好的:
In [7]: import whois
In [8]: print whois.query('stackoverflow.com').expiration_date
2020-02-02 11:59:59注意两件事:
whois.query而不是whois.whois (您并没有说您使用的是哪个版本的库,但在https://pypi.org/project/whois/上的文档页您可以清楚地看到它是whois.query,所以我不知道您的whois.whois`来自哪里)。F 210
关于网络
显示一个网络错误。它不是100%清除,但您可能有或可能没有访问您想要查询的whois服务器。
简单的测试方法:只需使用与代码相同的框中的命令行whois (但再次使用域名,而不是URL作为参数),您将看到正在发生的事情。
您甚至可以直接在端口43上执行telnet操作,就像whois不做任何其他操作一样。
$ echo 'stackoverflow.com' | nc whois.verisign-grs.com 43 | grep 'Expiry'
Registry Expiry Date: 2020-02-02T11:59:59Zhttps://stackoverflow.com/questions/58541665
复制相似问题