在特定站点上使用socket.gethostbyaddr(ip_addr)
时,我一直在获取主机名时遇到问题。
我不会详细介绍这不适用于哪个网站。
因此,按名称获取主机对于我迄今为止尝试过的每个站点都可以正常工作,但是当我尝试从中获取站点名称时,我收到一个错误说host not found
.
修复或替代方案最好有完整的数据。如果没有修复程序,我只能省略主机名。没什么大不了的。感谢您的帮助。
# not full code
hostip = socket.gethostbyname(hostname)
print socket.gethostbyaddr(hostip)
Error: socket.herror: [Errno 11004] host not found
并非每个 IP 地址都有反向 DNS。有时这是故意的,有时是因为您正在查看内部地址,并且在网络内部不需要它,因此不值得设置,有时有人只是搞砸了。
为什么有人会故意这样做?最常见的是,因为多个域名映射到同一个 IP 地址。
例如,共享主机站点可能会将其三个客户(www.foo.com、www.bar.com 和 www.baz.com(的站点映射到 1.2.3.4。HTTP在Host:
标头中为您提供请求的主机名,因此它可以确定您的浏览器想要访问哪个站点。但是在HTTP(或其他一些更高级别的协议(之外,没有办法弄清楚你所说的1.2.3.4指的是三个名称中的哪一个。因此,他们无法提供对您有用的任何内容。也可能有一个像shared_1234.hostingcompany这样的名称.com这对他们自己的IT人员很有用,在这种情况下,他们可能会提供这个,但除此之外,他们不会打扰任何反向DNS。