Как я могу получить публичный IP-адрес с помощью python2.7? Не частный IP.
Как я могу получить публичный IP-адрес с помощью python2.7?
Ответ 1
В настоящее время существует несколько вариантов:
- ip.42.pl
- jsonip.com
- httpbin.org
- ipify.org
Ниже приведены точные способы использования каждого из указанных выше.
ip.42.pl
from urllib2 import urlopen
my_ip = urlopen('http://ip.42.pl/raw').read()
Это первый вариант, который я нашел. Это очень удобно для скриптов, вам не нужен синтаксический анализ JSON.
jsonip.com
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('http://jsonip.com'))['ip']
По-видимому, единственной целью этого домена является возврат IP-адреса в JSON.
httpbin.org
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('http://httpbin.org/ip'))['origin']
httpbin.org - это сервис. Я часто рекомендую младшим разработчикам использовать их для тестирования своих скриптов/приложений.
ipify.org
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
Сила этой услуги обусловлена недостатком лимитов (нет ограничения скорости), инфраструктурой (размещенной на Heroku с высокой доступностью) и гибкостью (работает как для IPv4, так и для IPv6).
EDIT: добавлен httpbin.org в список доступных параметров.
Ответ 2
Мне нравится пакет запросов с http://ip.42.pl/raw
import requests
requests.get('http://ip.42.pl/raw').text
Ответ 3
Попробуйте следующее:
import ipgetter
import requests
IP = ipgetter.myip()
url = 'http://freegeoip.net/json/'+IP
r = requests.get(url)
js = r.json()
print 'IP Adress: ' + js['ip']
print 'Country Code: ' + js['country_code']
print 'Country Name: ' + js['country_name']
print 'Region Code: ' + js['region_code']
print 'Region Name: ' + js['region_name']
print 'City Name: ' + js['city']
print 'Zip code: ' + js['zip_code']
print 'Time Zone: ' + js['time_zone']
print 'Latitude: ' + str(js['latitude'])
print 'Longitude: ' + str(js['longitude'])
Ответ 4
Getip2 - это небольшой модуль с одной функцией, которая возвращает ваш общедоступный IP-адрес с произвольного сервера. Он может быть установлен через pip с помощью следующей команды.
~ $pip install getip2
Чтобы использовать его, просто импортируйте модуль и вызовите функцию, используя следующий пример.
>> import getip
>> ip = getip.get()
>>
>> ip
'66.249.76.109'
Ответ 5
Вы можете просто сделать это:
import requests
print requests.get("http://ipecho.net/plain?").text
Производит:
XX.XX.XXX.XXX