Python解析具有IPv6地址的主机名

Python解析具有IPv6地址的主机名,python,dns,ipv6,Python,Dns,Ipv6,我想知道是否有一种方法可以使用python解析仅在ipv6中解析的主机名和/或解析ipv4和ipv6中解析的主机名 socket.gethostbyname()和socket.gethostbyname\u ex()不适用于ipv6解析 一种虚拟的方法是运行实际的linux主机命令并解析结果。有没有更好的办法 谢谢,支持IPv6。您只需将family设置为AF\u INET6 socket.getaddrinfo("example.com", None, socket.AF_INET6) 我想

我想知道是否有一种方法可以使用python解析仅在ipv6中解析的主机名和/或解析ipv4和ipv6中解析的主机名

socket.gethostbyname()
socket.gethostbyname\u ex()
不适用于ipv6解析

一种虚拟的方法是运行实际的linux主机命令并解析结果。有没有更好的办法

谢谢,

支持IPv6。您只需将
family
设置为
AF\u INET6

socket.getaddrinfo("example.com", None, socket.AF_INET6)

我想更详细地介绍@john Colandouni的答案。

仅获取IPv6地址 要真正只获取相应的IPv6地址,您应该尝试使用

但请注意,例如,如果主机名没有IPv6 AAAA记录,例如:

>>> print(socket.getaddrinfo('microsoft.com', None, socket.AF_INET6)[0][4][0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.7/socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

因为同时启用了IPv4和IPv6。

谢谢,它可以工作,但与您提到的格式不同。它不接受任何关键字参数。对于socket.AF_INET6,它只返回Win10的本地IPV6。如果没有param AF_INET6,它也会返回公共IPV6和IPV4。我在“www.google.com”上尝试了这一点,它返回一个错误
[Errno 11004]getaddrinfo失败
,但当使用
nslookup-query=AAAA google.com
时,它会返回一些IPV6地址。有没有办法通过使用python脚本获得相同的IPv6地址?对我来说不起作用,返回了一个错误
[Errno 11004]getaddrinfo失败
@Sachihiro您能更具体一点吗?也许您必须先导入套接字?是的,当然我导入了套接字,如果我没有这样做,那将是一个不同的错误。我认为这是Python3.9上的一个bug,更新为3.9.2,错误仍然存在。@Sachihiro这是什么操作系统?您的解析器是否实际提供IPv6 AAAA记录(根据平台的不同,尝试使用nslookup、host、dig或其他工具)?通过在web上搜索bug,您发现了什么?您发现了吗,这个消息是在Python的源代码或其他地方发出的?我在Debian上使用Python3.9.1,但没有遇到这个错误。我在Windows上,是的,我使用了nslookup,在
google.com
>>> print(socket.getaddrinfo('microsoft.com', None, socket.AF_INET6)[0][4][0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.7/socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
>>> print(socket.gethostbyaddr('2a00:1450:4001:81d::200e')[0])
fra15s18-in-x0e.1e100.net