我正在使用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
可靠吗?
答案 0 :(得分:1)
gethostbyname()
完全没有问题 - 域lns.sa
确实不存在。
地址67.215.65.132
是OpenDNS为不存在的域提供的地址。它的名字是hit-nxdomain.opendns.com.
您很可能配置了一个OpenDNS服务器,而另一个配置了一个。 OpenDNS正在重写任何“未找到”的域名,而其他提供商则不会。