Как получить IP-адрес из URL-адреса в Python?

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

В этом руководстве представлено несколько примеров того, как получить IP-адрес из URL-адреса с помощью Python.

Python получить IP-адрес по URL-адресу

Прежде чем получить IP-адрес из URL-адреса, позвольте мне определить IP-адрес. У каждого дома есть уникальный адрес, который идентифицирует этот дом в этом районе; аналогично компьютер имеет IP-адрес, и этот компьютер можно идентифицировать в сети.

Всякий раз, когда данные передаются с одного компьютера на другой, у данных есть IP-адрес как отправителя, так и получателя, по которому данные должны идти.

Без IP-адреса данные не знали бы, куда перемещаться на многих подключенных машинах, составляющих Интернет. Другими словами, IP-адреса похожи на цифровые домашние адреса ваших устройств. Они дают им имя, иногда номер, чтобы идентифицировать их.

Они также указывают им местоположение или местоположение с указаниями, чтобы данные могли попасть туда из любой точки Интернета. Итак, вы узнаете о различных методах получения IP-адреса определенного URL-адреса (домена), работающего на компьютере.

Python получает IP-адрес по URL-адресу с помощью пакета сокетов

Модуль сокета находится в базовом пакете 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}")

Python получает IP-адрес по URL-адресу с помощью пакета сокетов

В приведенном выше примере метод 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}")

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

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

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

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

Заключение

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