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

时间:2013-10-03 21:18:38

标签: 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

1 个答案:

答案 0 :(得分:3)

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