我正在使用gethostbyname函数来检查域名系统和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可靠吗?
发布于 2012-01-08 23:52:32
gethostbyname()一点问题都没有--域lns.sa实际上并不存在。
地址67.215.65.132是OpenDNS为不存在的域提供的地址。它的名字是hit-nxdomain.opendns.com.
最有可能的情况是,您配置了一个OpenDNS服务器,另一个来自其他人。OpenDNS正在重写任何“未找到”的域名,其他提供商没有。
https://stackoverflow.com/questions/8778832
复制相似问题