socket.gethostbyname表现不正常
我正在使用 gethostbyname
函数来检查 DNS 和 IP 地址。不过,在这种情况下,它的表现不是很好:
>>> from socket import gethostbyname
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.gaierror: [Errno -2] Name or service not known
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.gaierror: [Errno -2] Name or service not known
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
'67.215.65.132'
>>> gethostbyname('lns.sa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.gaierror: [Errno -2] Name or service not known
>>>
它给出了两个不同的结果,一个是来自 OpenDNS 的,另一个是 Name or service not known
,这是正确的答案。过了几秒钟后,它又正常工作了。有人能解释一下这种情况吗?gethostbyname
这个函数可靠吗?
1 个回答
1
其实,gethostbyname()
这个函数没有任何问题,域名 lns.sa
确实是不存在的。
地址 67.215.65.132
是 OpenDNS 提供的,用来表示那些不存在的域名。它的名字是 hit-nxdomain.opendns.com.
很可能你配置了一个 OpenDNS 的服务器,还有一个其他公司的服务器。OpenDNS 会对那些“找不到”的域名进行处理,而其他提供商则不会。