获取与 URL 关联的所有 IP,Python

2024-03-15

我正在尝试查找与某个 URL 关联的所有 IP。我一直在使用“socket”包,但对不同功能返回的不同数量的 IP 感到困惑。例如见下文。有没有返回所有IP的函数?

socket.gethostbyname('google.com')
#returns 1 ip

socket.gethostbyname_ex('google.com')
#returns 6 ips

socket.getaddrinfo('google.com', 80)
#returns 12 ips

有没有返回所有IP的函数?


不,没有返回“所有”IP 的功能。您看到的 IP 地址是您的本地 DNS 服务器所知道的google.com。这些地址因地点而异。

所有方法的行为都不同,这是有原因的

  • gethostbyname返回该主机 A 记录中的 1 个 IPv4 地址。这是为了简单的事情“让我们连接任何地址google.com".

  • gethostbyname_ex返回所有已知的 IPv4 地址;也就是说,A 记录中的所有地址google.com。这是针对您需要高可用性的情况,因此您可以尝试连接其中几个 IPv4 地址,然后继续成功的连接。

  • 由于以上都不支持 IPv6 地址,socket.getaddrinfo也返回它们。除非你也提供论据proto=socket.IPPROTO_TCP,您将有一些额外的协议,例如相同的地址重复 3 次 - 例如 TCP、UDP 和 RAW 套接字。

这 3 个中,socket.getaddrinfo给出了“大部分”的 IP 地址,但是由于 DNS 的分布式特性,尤其是 google 的 DNS,您无法获取它们all.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取与 URL 关联的所有 IP,Python 的相关文章

随机推荐