查询电脑对内对外 IP
这篇文章会使用 Python 的 socket 标准函数库,读取目前电脑对内的连线 IP ( 内网 ),接着会搭配 Requests 第三方函数库,实作可以取得对外 IP ( 外网 ) 的功能。
本篇建议使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或 Anaconda Jupyter ( 参考:使用 Anaconda ) 进行实作。
查询电脑对内 IP
如果要查询电脑对内的 IP ( 内网 ),可以使用 Python 的 socket 标准函数库进行处理,socket 函数库可以建立 Server 端 ( 服务器 ) 以及 Client 端 ( 用户 ),让彼此互相连接和发送消息,下方是 socket 的基本用法:
socket.socket(family, type, proto)
# family:IPv4 本機、IPv4 網路、IPv6 網路。
# type:使用 TCP 或 UDP 方式。
# protocol: 串接協定 ( 通常預設 0 )。
family 和 type 参数的内容如下:
| 参数 | 宣内容 | 说明 |
|---|---|---|
| family | socket.AF_UNIX | IPv4 本机。 |
| socket.AF_INET | IPv4 网络。 | |
| socket.AF_INET6 | IPv6 网络。 | |
| type | socket.SOCK_STREAM | 使用 TCP。 |
| socket.SOCK_DGRAM | 使用 UDP。 |
下方的程序码执行后,会使用 socket 函数库的 socket 方法,向“8.8.8.8 port 80”的位址进行初始化链接 ( Google 的 Public DNS ),链接后就可以得到对内的 IP。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
print(ip)
s.close()
查询电脑对外 IP
如果要查询电脑对外的 IP ( 外网 ),则需要透过 Requests 函数库向特定网站 ( 例如 api.ipify.org ) 发送请求,就能获得回传的 IP 信息 ( 参考:Requests 函数库 )。
import requests
ip = requests.get('https://api.ipify.org').text
print(ip)
微信扫码关注
抖音扫码关注