首页 > 解决方案 > 从 IP 地址获取 gTLD 或 ccTLD

问题描述

有很多关于从 URL 获取 IP 地址的问题,但反之亦然。

正如标题所示,我想获取其各自 IP 地址的网站 URL。例如:

>>> import socket
>>> print(socket.gethostbyname('google.com'))

这会查找域并返回172.217.20.14。我正在寻找对应的部分,例如:

>>> print(socket.getnamebyhost('172.217.20.14'))

任何类似的东西都会将域返回为指定 IP的google.com 。

这可以在python3中做到吗?如果是,如何实现?


更新

不幸的是,我处理这个问题的方式是错误的。存在共享一对多关系的 IP,即名称服务器指向多个 url,除非 PTR 记录另有说明。我的问题改写了:

ipinfo.io等 IP 到域的数据提供商如何返回单个 IP 的顶级域?

据我了解,A 或 AAAA 记录起着重要作用,但我从中得到的唯一东西是 ns 而不是域。我不知道如何从记录中提取 gTLD 或 ccTLD。如果有人愿意分享有关如何从任何 IP 解析 gTLD 或 ccTLD 的答案,我愿意接受任何建议。最好在 python 中,但一个 shell 脚本也足够了。

标签: pythondnsipweb-hosting

解决方案


socket.gethostbyaddr('172.217.20.14') 将是正确的方法,但不一定。原因如下:

域到 IP 解析如下:

域 > 根服务器 > 源服务器 > 源服务器的主机名到 IP 配置。

现在要对其进行逆向工程,我们必须考虑:

  1. 与共享主机一样,可以有多个域共享相同的 IP 地址。

  2. 假设域有专用 IP,nslookup 或 gethostbyaddr '应该'返回域名,但前面可能有代理服务器,如 Cloudflare 和谷歌使用的任何东西。

因此,即使您手动执行此操作,例如尝试找出正在运行的实际 IP 谷歌服务器,您也无法这样做,因为这会打开他们的中央服务器以进行各种攻击,最重要的是 DDoS。


推荐阅读