Python 套接字:gethostbyaddr:反向 DNS 查找失败

Cri*_*spy 2 python sockets reverse-dns gethostbyaddr

socket.gethostbyaddr(ip_addr)我在特定站点上使用时获取主机名时遇到问题。

我不会详细说明这不适用于哪个网站。

因此,通过名称获取主机对于到目前为止我尝试过的每个站点都可以正常工作,但是当我尝试从中获取站点名称时,我收到一条错误消息 ing host not found

修复或替代方案对于拥有完整的数据来说是很好的。如果没有解决办法,我只能省略主机名。没什么大不了的。谢谢您的帮助。

# not full code
hostip = socket.gethostbyname(hostname)
print socket.gethostbyaddr(hostip)

Error: socket.herror: [Errno 11004] host not found
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 7

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