Python UPnP 库使用方法详解:miniupnpc 和 python-upnp-igd
Python UPnP 库使用方法详解:miniupnpc 和 python-upnp-igd
本文将介绍如何使用 Python 中的两个流行 UPnP 库:miniupnpc 和 python-upnp-igd,来实现端口映射。UPnP(通用即插即用)是一种网络协议,允许设备自动发现彼此并建立连接。
1. 使用 miniupnpc 库
# 导入 miniupnpc 库
import miniupnpc
# 创建一个 upnp 客户端
upnp = miniupnpc.UPnP()
# 发现 upnp 设备
upnp.discoverdelay = 200
upnp.discover()
# 获取 upnp 设备列表
devices = upnp.discover()
# 如果找到了 upnp 设备
if devices:
# 获取第一个 upnp 设备
upnp.selectigd()
# 添加端口映射
upnp.addportmapping(
'TCP', # 协议类型
'192.168.1.100', # 内部 IP 地址
80, # 内部端口号
80, # 外部端口号
'test', # 描述信息
'' # 映射过期时间
)
2. 使用 python-upnp-igd 库
# 导入 python-upnp-igd 库
from miniupnpc import UPnP
# 创建一个 upnp 客户端
upnp = UPnP()
# 发现 upnp 设备
upnp.discover()
# 获取 upnp 设备列表
devices = upnp.discover()
# 如果找到了 upnp 设备
if devices:
# 获取第一个 upnp 设备
device = devices[0]
# 获取 upnp 设备的 IP 地址
ipaddr = device.ipaddr()
# 添加端口映射
device.addportmapping(
80, # 内部端口号
'TCP', # 协议类型
None, # 描述信息
80, # 外部端口号
ipaddr, # 内部 IP 地址
None # 映射过期时间
)
3. 使用 miniupnpc 库(另一种方法)
# 导入 miniupnpc 库
import miniupnpc
# 创建一个 upnp 客户端
upnp = miniupnpc.UPnP()
# 发现 upnp 设备
upnp.discover()
# 获取 upnp 设备列表
devices = upnp.discover()
# 如果找到了 upnp 设备
if devices:
# 获取第一个 upnp 设备
device = devices[0]
# 获取 upnp 设备的 IP 地址
ipaddr = device.lanaddr
# 添加端口映射
device.addportmapping(
80, # 内部端口号
80, # 外部端口号
ipaddr, # 内部 IP 地址
'TCP', # 协议类型
'test', # 描述信息
None, # 映射过期时间
None # 映射协议类型
)
注意:
- 确保你的路由器支持 UPnP 协议。
- 在使用 UPnP 之前,你需要在你的路由器设置中启用 UPnP 功能。
- 这些代码示例仅仅是演示如何使用 UPnP 库,你需要根据你的实际需求进行修改。
更多信息:
- miniupnpc 文档:https://miniupnpc.free.fr/miniupnpc.html
- python-upnp-igd 文档:https://pypi.org/project/python-upnp-igd/
原文地址: https://www.cveoy.top/t/topic/nBcy 著作权归作者所有。请勿转载和采集!