Как узнать IP адрес с помощью Python

Модуль сокета находится в базовом пакете Python. Он обеспечивает низкоуровневый интерфейс для сетевых подключений и преобразует доменные имена (URL-адреса) в IP-адреса.

Например, запустите приведенный ниже код, который найдет IP-адрес URL-адреса (google.com).

# импортируем модуль socket
import socket

# определяем функцию для получения IP адреса из URL
def get_ip_address(url):
    try:
        # используем функцию gethostbyname() модуля socket для ip адреса
        ip_address = socket.gethostbyname(url)
        
        # возвращаем ip из функции
        return ip_address
    # если произошла ошибка, выводим на консоль
    except socket.error as err:
        print(f"Error: {err}")

# определяем адрес, чей ip нужно получить
url = "google.com"

# вызываем функцию с URL
ip = get_ip_address(url)
print(f"The IP address of {url} is {ip}")

Получение IP адреса с помощью модуля socket в Python

В приведенном выше примере метод gethostbyname() модуля сокета возвращает IP-адрес 108.177.127.101 URL-адреса (google.com).

Модуль сокета также имеет еще одну функцию, getaddrinfo(), которая возвращает URL-адрес, включая IP-адрес. Например, запустите приведенный ниже код.

# импортируем модуль socket для взаимодействия с сетью
import socket

def get_ip_from_url(url):
    try:
        # удаляем протокол (http://, https://) и извлекаем имя хоста
        domain_name = url.replace('http://', '').replace('https://', '').split('/')[0]
        
        # получаем информацию об адресе по url
        address_info = socket.getaddrinfo(domain_name, None)
        
        # извлекаем ip адрес из этой информации
        ip_addresses = []
        for info in address_info:
            # получаем ip, хранимый по индексу index[4][0]
            ip_address = info[4][0]
            # проверяем на дублирование
            if ip_address not in ip_addresses:
                ip_addresses.append(ip_address)
        # возвращаем ip адрес
        return ip_addresses
    except socket.gaierror as e:
        return f"Error resolving hostname: {e}"

url = "https://www.pythonguides.com"
# вызываем функцию с доменом для получения ip
ip_addresses = get_ip_from_url(url)
print(f"IP addresses of {url}: {ip_addresses}")

Получаем IP-адрес по URL-адресу с помощью getaddrinfo()

Сначала он удаляет http:// или https:// из URL-адреса, а затем разделяет оставшуюся строку на /, чтобы получить имя хоста.

Затем sockets.getaddrinfo(hostname, None) возвращает информацию о заданных адресах имени хоста. None означает , что функция должна использовать порт по умолчанию.

После этого он перебирает список, возвращаемый возвращенным списком кортежей адресной информации, и удаляет из них IP-адреса. Это гарантирует, что каждый IP-адрес не повторится в конечном результате.
Заключение

В этом руководстве по Python вы узнали, как получить IP-адрес из URL-адреса. Простые подходы Python для преобразования URL-адреса в IP-адрес включают базовые библиотеки, такие как сокет. Это фундаментальные процедуры в большинстве сетевых программ и операций по очистке веб-страниц.

Автор

Фото аватара

Владимир Михайлов

Программист на Python с большим количеством опыта и разнообразных проектов.