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

Sea*_*ene 43 python ip

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

Tad*_*eck 105

目前有几种选择:

  • 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()
Run Code Online (Sandbox Code Playgroud)

这是我找到的第一个选项.脚本非常方便,这里不需要JSON解析.

jsonip.com

from json import load
from urllib2 import urlopen

my_ip = load(urlopen('http://jsonip.com'))['ip']
Run Code Online (Sandbox Code Playgroud)

看似这个域的唯一目的是返回JSON中的IP地址.

httpbin.org

from json import load
from urllib2 import urlopen

my_ip = load(urlopen('http://httpbin.org/ip'))['origin']
Run Code Online (Sandbox Code Playgroud)

httpbin.org是我经常建议初级开发人员用来测试他们的脚本/应用程序的服务.

ipify.org

from json import load
from urllib2 import urlopen

my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
Run Code Online (Sandbox Code Playgroud)

这项服务的强大之处在于缺乏限制(没有速率限制),基础设施(放置在Heroku上,考虑到高可用性)和灵活性(适用于IPv4和IPv6).

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

编辑:感谢kert的说明添加了ipify.org.

  • http://www.ipify.org/似乎也是最新且可靠的地方. (4认同)
  • 我喜欢icanhazip.com,这是一个只有原始IP的整个网站; 无需添加数组,格式等. (2认同)

Hyp*_*ive 14

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

import requests
requests.get('http://ip.42.pl/raw').text
Run Code Online (Sandbox Code Playgroud)