Подтвердить что ты не робот

Как я могу получить публичный IP-адрес с помощью python2.7?

Как я могу получить публичный IP-адрес с помощью python2.7? Не частный IP.

4b9b3361

Ответ 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 в список доступных параметров.

EDIT: добавлено ipify.org благодаря kert note.

Ответ 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