1

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
4

1 回答 1

5

并非每个 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。

于 2013-10-03T21:29:23.507 回答