Модуль сокета находится в базовом пакете 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}")
В приведенном выше примере метод 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}")
Сначала он удаляет http:// или https:// из URL-адреса, а затем разделяет оставшуюся строку на /, чтобы получить имя хоста.
Затем sockets.getaddrinfo(hostname, None)
возвращает информацию о заданных адресах имени хоста. None означает , что функция должна использовать порт по умолчанию.
После этого он перебирает список, возвращаемый возвращенным списком кортежей адресной информации, и удаляет из них IP-адреса. Это гарантирует, что каждый IP-адрес не повторится в конечном результате.
Заключение
В этом руководстве по Python вы узнали, как получить IP-адрес из URL-адреса. Простые подходы Python для преобразования URL-адреса в IP-адрес включают базовые библиотеки, такие как сокет. Это фундаментальные процедуры в большинстве сетевых программ и операций по очистке веб-страниц.