python - 从 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 脚本也足够了。
解决方案
socket.gethostbyaddr('172.217.20.14') 将是正确的方法,但不一定。原因如下:
域到 IP 解析如下:
域 > 根服务器 > 源服务器 > 源服务器的主机名到 IP 配置。
现在要对其进行逆向工程,我们必须考虑:
与共享主机一样,可以有多个域共享相同的 IP 地址。
假设域有专用 IP,nslookup 或 gethostbyaddr '应该'返回域名,但前面可能有代理服务器,如 Cloudflare 和谷歌使用的任何东西。
因此,即使您手动执行此操作,例如尝试找出正在运行的实际 IP 谷歌服务器,您也无法这样做,因为这会打开他们的中央服务器以进行各种攻击,最重要的是 DDoS。
推荐阅读
- apache-zookeeper - 从 zookeeper 客户端获取主机信息
- python - Python/Pandas for 循环遍历列表仅处理列表中的最后一项
- sql - 识别不包含在现有范围内的值
- powershell - Powershell - Office365 Exchange 入站和出站邮件
- python - 从熊猫系列中过滤熊猫df多列
- python - 将json文件中的数据提取到csv中
- c# - 重新加载后如何使我的当前 EXP 整数不重置为 0
- python - 从下拉列表组合中提取所有链接
- javascript - 多个 HTML 输入范围类型的标签总是加起来一个特定的值?
- javascript - 获取最高建筑物名称和高度