我如何使用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'])
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