python脚本查询家庭网络的公网ip

假设您已经满足下面的条件

  1. 拥有某运营商提供的家庭宽带
  2. 宽带已经向运营商要求提供公网IP(静态IP的无需再进行查询,一般考虑动态公网IP)

访问http://www.cip.cc/

直接访问该网址,可以直观看到公网IP

类似的网址https://api.ipify.org/

直接访问,可以再页面上看到公网IP,还可以调用https://api.ipify.org?format=json 返回json数据,利用python调用该链接获取公网ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import json
from urllib import request


def main():
url = 'https://api.ipify.org?format=json'
headers = {"Content-Type": "application/json; charset=utf-8"}

req = request.Request(url=url, method='GET', headers=headers)
response = request.urlopen(req)
rsp_body = response.read().decode('utf-8')
rsp_dict = json.loads(rsp_body)
wan_ip = rsp_dict.get('ip')
print(wan_ip)


if __name__ == '__main__':
main()

保存上面的代码到test.py,在同目录下执行python test.py