Python: как получить IP-адрес из полного доменного имени - PullRequest
4 голосов
/ 07 января 2011

Если у меня есть полное доменное имя, например, www.google.com, как мне получить соответствующий IP-адрес?

Ответы [ 3 ]

7 голосов
/ 07 января 2011

Самый простой способ сделать это - socket.gethostbyname().

3 голосов
/ 07 января 2011

Вы можете использовать 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))]

Примечание: gethostbyname устарело в C(и Python socket.gethostbyname реализован с ним), поскольку он не поддерживает адреса IPv6, и getaddrinfo является рекомендуемой заменой.

0 голосов
/ 07 января 2011

Использование socket.gethostbyname(hostname) см .: http://docs.python.org/library/socket.html#socket.gethostbyname

...