Автор оригинала: Pankaj Kumar.
Модуль Python Socket может использоваться для получения IP-адреса из хоста имена.
Модуль сокета является частью библиотек Core Python, поэтому нам не нужно устанавливать его отдельно.
Модуль Python Socket, чтобы получить IP-адрес от имени хоста
Модуль сокета Python GetHostbyName ()
Функция принимает аргумент HostName и возвращает IP-адрес в строковом формате.
Вот простой пример в переводчике Python, чтобы узнать IP-адрес некоторых сайтов.
# python3.7 Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import socket >>> socket.gethostbyname('journaldev.com') '45.79.77.230' >>> socket.gethostbyname('google.com') '172.217.166.110' >>>
Примечание : Если сайт находится за нагрузкой и работает в облаке, вы можете получить другой результат для поиска IP-адреса.
Например, попробуйте запустить вышеуказанную команду для Google.com или Facebook.com. Если вы не в том же месте, что и мой (Индия), шансы состоят в том, что вы получите другой IP-адрес в качестве вывода.
Python Script, чтобы узнать IP-адрес сайта
Давайте посмотрим на пример, где мы просим пользователя ввести адрес веб-сайта, а затем распечатать его IP-адрес.
import socket hostname = input("Please enter website address:\n") # IP lookup from hostname print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')
Вот еще один пример, чтобы пройти имя хоста в качестве аргумента командной строки к скрипту. Сценарий найдет IP-адрес и распечатает его.
import socket import sys # no error handling is done here, excuse me for that hostname = sys.argv[1] # IP lookup from hostname print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')
Выход :
# python3.7 ip_address.py facebook.com The facebook.com IP Address is 157.240.23.35
Сценарии ошибок с розеткой.
Если имя хоста не разрешается до действительного IP-адреса, Socket.Gorror
Поднялся. Мы можем поймать эту ошибку в нашей программе, используя попробуйте, кроме блокировать.
Вот обновленный скрипт с обработкой исключения для недопустимого имени хоста.
import socket import sys hostname = sys.argv[1] # IP lookup from hostname try: ip = socket.gethostbyname(hostname) print(f'The {hostname} IP Address is {ip}') except socket.gaierror as e: print(f'Invalid hostname, error raised is {e}')
Выход:
# python3.7 ip_address.py jasjdkks.com Invalid hostname, error raised is [Errno 8] nodename nor servname provided, or not known #
Ссылка : Гукет Модуль API Документы