whois.whois 函数总是出现超时错误
The whois.whois function always gets a timed out error
whois.whois
函数总是出现超时错误。
一开始我以为是因为我的项目是用Python2.7写的,结果我又查了3.7也报同样的错误。
我检查了使用 whois 和 link 的在线网站上的地址,但没有收到此错误。
有人知道为什么会这样吗?
import whois
w = whois.whois("https://whosebug.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
您的代码至少有两个问题,您也可能有网络问题。
但是,没有理由不在 Python2 上工作。
关于代码
这很好用:
In [7]: import whois
In [8]: print whois.query('whosebug.com').expiration_date
2020-02-02 11:59:59
注意两点:
- whois 是关于域名的,而不是 URLs;所以你应该传递一个域名;请更普遍地注意,对于新的尝试,您应该查看 RDAP 而不是 whois,因为您将获得更好的体验
- 你需要使用
whois.query
而不是 whois.whois
(你不是说你使用的是哪个版本的库,但是在 https://pypi.org/project/whois/ 的文档页面上你可以清楚地看到它是whois.query
所以我不知道你的 whois.whois` 来自哪里)。
关于网络
您显示网络错误。这不是 100% 清楚,但您可能有权也可能无法访问您要查询的 whois 服务器。
简单的测试方法:只需在与您的代码相同的框中使用命令行 whois
(但再次使用域名,而不是 URL 作为参数),您将看到什么正在发生。
您甚至可以直接在端口 43 上进行远程登录,因为 whois 不会执行任何其他操作。
$ echo 'whosebug.com' | nc whois.verisign-grs.com 43 | grep 'Expiry'
Registry Expiry Date: 2020-02-02T11:59:59Z
whois.whois
函数总是出现超时错误。
一开始我以为是因为我的项目是用Python2.7写的,结果我又查了3.7也报同样的错误。
我检查了使用 whois 和 link 的在线网站上的地址,但没有收到此错误。
有人知道为什么会这样吗?
import whois
w = whois.whois("https://whosebug.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
您的代码至少有两个问题,您也可能有网络问题。
但是,没有理由不在 Python2 上工作。
关于代码
这很好用:
In [7]: import whois
In [8]: print whois.query('whosebug.com').expiration_date
2020-02-02 11:59:59
注意两点:
- whois 是关于域名的,而不是 URLs;所以你应该传递一个域名;请更普遍地注意,对于新的尝试,您应该查看 RDAP 而不是 whois,因为您将获得更好的体验
- 你需要使用
whois.query
而不是whois.whois
(你不是说你使用的是哪个版本的库,但是在 https://pypi.org/project/whois/ 的文档页面上你可以清楚地看到它是whois.query
所以我不知道你的 whois.whois` 来自哪里)。
关于网络
您显示网络错误。这不是 100% 清楚,但您可能有权也可能无法访问您要查询的 whois 服务器。
简单的测试方法:只需在与您的代码相同的框中使用命令行 whois
(但再次使用域名,而不是 URL 作为参数),您将看到什么正在发生。
您甚至可以直接在端口 43 上进行远程登录,因为 whois 不会执行任何其他操作。
$ echo 'whosebug.com' | nc whois.verisign-grs.com 43 | grep 'Expiry'
Registry Expiry Date: 2020-02-02T11:59:59Z