#python #python_3x
В документации нашел socket.gethostbyname(socket.gethostname()). Но у меня выдает ошибку. Не работает gethostbyname, не знаю почему. Версия питона 3.2. Подскажите, из-за чего может не работать или другое решение поставленной задачи.
Ответы
Ответ 1
>>> import http.client >>> conn = http.client.HTTPConnection("ifconfig.me") >>> conn.request("GET", "/ip") >>> conn.getresponse().read() '123.45.67.89\n'Ответ 2
Чтобы узнать свой публичный IP адрес, можно DNS запрос сделать, например на Windows: C:\> nslookup myip.opendns.com resolver1.opendns.com Вот несколько примеров кода как на Питоне DNS запрос можно сделать. Достоинства DNS по сравнению с HTTP, чтобы свой внешний IP адрес узнать: шансов что DNS сервис дольше жить будет больше (практика это подтверждает: достаточно на старые ответы на похожие вопросы посмотреть—за годы многие http-сервисы возвращающие IP адрес компьютера в интернете пришли и ушли) DNS имеет стандартный результат (формат вывода со временем стабильный)—больше шансов ваша программа правильно продолжит результат распознавать со временем DNS запрос как правило быстрее чем HTTP запрос—если это имеет значение в вашем случае. Похожий вопрос: How can I get my external IP address in bash?Ответ 3
Распарсить, не? import bs4, requests s = requests.get('https://2ip.ua/ru/') b = bs4.BeautifulSoup(s.text, "html.parser") a = b.select(" .ipblockgradient .ip")[0].getText() print(a)Ответ 4
import socket socket.gethostbyname(socket.getfqdn())Ответ 5
import urllib.request import re res = urllib.request.urlopen('http://2ip.ru/').read() print(re.search(b'\d+\.\d+\.\d+\.\d+', res).group())Ответ 6
ip можно узнать тут и тут import requests r = requests.get('https://ramziv.com/ip').text print(r)
Комментариев нет:
Отправить комментарий