无需密码设置路由器端口转发

前言

如果需要在路由器上设置端口转发以访问内网设备,而又不知道密码.
仍然可以利用路由器本身的功能(UPnP):
应用请求路由器打开端口转发的机制.
这是 NAT 环境下必要的操作,一般路由器会提供功能.

解决

1
2
3
4
5
6
7
8
9
10
import miniupnpc
upnp = miniupnpc.UPnP()
upnp.discoverdelay = 10
upnp.discover()
upnp.selectigd()
external_port = 8181
internal_port = 80
internal_ip = '192.168.1.2'
# upnp.addportmapping(external_port, 'TCP', upnp.lanaddr, internal_port, 'testing', '')
upnp.addportmapping(external_port, 'TCP', internal_ip, internal_port, 'testing', '')
  • upnp.lanaddr 指当前设备的 ip 地址