我如何使用python2.7获取公共IP?

我如何使用python2.7获取公共IP? 不是私有IP。

目前有几种select:

  • 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() 

这是我find的第一个选项。 对于脚本来说非常方便,这里不需要JSONparsing。

jsonip.com

 from json import load from urllib2 import urlopen my_ip = load(urlopen('http://jsonip.com'))['ip'] 

看起来这个域的唯一目的是在JSON中返回IP地址。

httpbin.org

 from json import load from urllib2 import urlopen my_ip = load(urlopen('http://httpbin.org/ip'))['origin'] 

httpbin.org是服务我经常build议初级开发者使用它来testing他们的脚本/应用程序。

ipify.org

 from json import load from urllib2 import urlopen my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip'] 

这项服务的function来自缺乏限制(没有速率限制),基础设施(放在Heroku上,考虑到高可用性)和灵活性(适用于IPv4和IPv6)。

编辑 :添加httpbin.org到可用选项列表。

编辑 :增加ipify.org感谢kert的笔记 。

尝试这个:

 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']) 

我喜欢http://ip.42.pl/raw的请求包;

 import requests requests.get('http://ip.42.pl/raw').text 

Getip2是一个小模块,它具有一个函数,可以从一个随机服务器返回你的公共IP地址。 它可以通过下面的命令通过点安装。

〜$ pip安装getip2

要使用它,只需导入模块并使用以下示例调用该函数。

 >> import getip >> ip = getip.get() >> >> ip '66.249.76.109' 

你可以这样做:

 import requests print requests.get("http://ipecho.net/plain?").text 

生产:

 XX.XX.XXX.XXX