Python:如何从FQDN获取IP地址

5

如果我有一个完全限定域名(FQDN),例如www.google.com,我该如何获取相应的IP地址?

3个回答

7
最简单的方法是使用 socket.gethostbyname()。该函数可以帮助您获取主机名对应的IP地址。

6
你可以使用socket.getaddrinfo。它会为你提供与名称相关联的不同IP地址,并且还可以提供IPv6地址。
从文档中得知:
>>> import socket
>>> help(socket.getaddrinfo)
Help on built-in function getaddrinfo in module _socket:

getaddrinfo(...)
    getaddrinfo(host, port [, family, socktype, proto, flags])
        -> list of (family, socktype, proto, canonname, sockaddr)

    Resolve host and port into addrinfo struct.
>>> from pprint import pprint
>>> pprint(socket.getaddrinfo('www.google.com', 80))
[(2, 1, 6, '', ('74.125.230.83', 80)),
 (2, 2, 17, '', ('74.125.230.83', 80)),
 (2, 3, 0, '', ('74.125.230.83', 80)),
 (2, 1, 6, '', ('74.125.230.80', 80)),
 (2, 2, 17, '', ('74.125.230.80', 80)),
 (2, 3, 0, '', ('74.125.230.80', 80)),
 (2, 1, 6, '', ('74.125.230.81', 80)),
 (2, 2, 17, '', ('74.125.230.81', 80)),
 (2, 3, 0, '', ('74.125.230.81', 80)),
 (2, 1, 6, '', ('74.125.230.84', 80)),
 (2, 2, 17, '', ('74.125.230.84', 80)),
 (2, 3, 0, '', ('74.125.230.84', 80)),
 (2, 1, 6, '', ('74.125.230.82', 80)),
 (2, 2, 17, '', ('74.125.230.82', 80)),
 (2, 3, 0, '', ('74.125.230.82', 80))]

注意:在C语言中gethostbyname已经被弃用(Python的socket.gethostbyname也是用它实现的),因为它不支持IPv6地址,getaddrinfo是推荐的替代方案。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接