目前有几种选择:
- 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('https://ipv4.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 是我经常推荐给初级开发人员用于测试他们的脚本/应用程序的服务。
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: Added httpbin.org http://httpbin.org到可用选项列表。
EDIT: Added ipify.org http://www.ipify.org/谢谢克特的笔记 https://stackoverflow.com/questions/9481419/how-can-i-get-the-public-ip-using-python2-7/9481595?noredirect=1#comment48399540_9481595.