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/
Python UPnP 库使用方法详解:miniupnpc 和 python-upnp-igd

原文地址: https://www.cveoy.top/t/topic/nBcy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录