3

我正在使用gethostbynameDNS 和 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可靠地使用吗?

4

1 回答 1

1

完全没有问题gethostbyname()- 域lns.sa确实不存在。

该地址67.215.65.132是 OpenDNS 为不存在的域提供的地址。它的名字是hit-nxdomain.opendns.com.

很可能您配置了一台 OpenDNS 服务器,另一台来自其他人。OpenDNS 正在重写任何“未找到”的域,而其他提供商则没有。

于 2012-01-08T15:52:31.737 回答