使用Python查找网络(外部)IP地址

16 投票
6 回答
26918 浏览
提问于 2025-04-18 11:43

我想用Python来查找我的互联网服务提供商(外部)IP地址(比如宽带之类的)。

我的网络上连接了多台机器。我尝试了不同的方法,但只找到了我机器的本地IP和公共IP。请问我该如何通过Python找到我的外部IP地址呢?

提前谢谢你。

6 个回答

0

在我看来,最简单的解决办法就是

f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text

就这样。

1

你可以看看这个回答:

https://stackoverflow.com/a/22157882/5687894

简而言之:

import ipgetter
ip=ipgetter.myip()
3

你需要使用一个你信任的外部来源。Python2.x:

from urllib import urlopen
import json
url = 'http://api.hostip.info/get_json.php'
info = json.loads(urlopen(url).read())
print(info['ip'])

如果你想要更多信息,可以从 info 中打印出更多的值。

非Python的一行代码:

wget -q -O- icanhazip.com
14

安全选项(支持 https

from requests import get

get('https://ipapi.co/ip/').text

完整的 JSON 响应

附注:requests 模块很方便,可以用来支持 https。不过你也可以试试 httplib

19

使用这个脚本:

import urllib, json

data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]

不使用json:

import urllib, re

data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data

另一种方法是解析 ifconfig(适用于Linux)或 ipconfig(适用于Windows)命令,但要注意翻译过的Windows系统(ipconfig可能被翻译了)。

在Linux上可以使用的库的例子: ifparser

撰写回答