如何从非Wi-Fi连接的设备访问本地运行的Flask API
问题本质
你的Flask服务运行在局域网环境下,同一WiFi下的设备同属一个局域网可以互相访问,手机断开WiFi后使用移动公网,无法直接定位到局域网内的电脑设备,因此访问失败,不属于本地防火墙配置问题。
可尝试的解决方案
方案1:公网端口映射(需要宽带分配公网IP)
- 先确认公网IP资质:登录家用路由器管理后台,查看WAN口获取的IP,与搜索引擎搜索「我的IP」得到的公网地址一致则说明你有可用公网IP。
- 进入路由器的「虚拟服务器/端口映射」设置页,新增映射规则:
- 外部端口:可填5000(如果被运营商封禁可换10000以上的端口如15000)
- 内部IP:填运行Flask服务的电脑的局域网IP
- 内部端口:填5000
- 协议:选择TCP
保存规则后生效。
- 手机断开WiFi后访问
http://[你的公网IP]:[外部端口]/即可。 - 补充检查:确认Windows防火墙的5000端口入站规则允许任意远程IP访问,不要限制为局域网段IP。
方案2:内网穿透(无公网IP时首选)
- 直接使用本地内网穿透工具即可实现公网转发,以ngrok为例:
- 本地启动Flask服务后,运行命令
ngrok http 5000 - 工具会自动生成公网转发地址,类似
https://xxx.ngrok.io - 手机移动网直接访问该地址即可调通接口。
- 本地启动Flask服务后,运行命令
- 也可自行基于云服务器搭建frp服务实现内网穿透,稳定性更高。
方案3:USB共享网络(临时测试首选,无需额外配置)
- 手机开启移动数据,用USB线连接运行Flask的电脑
- 手机设置中开启「USB共享网络」,此时电脑的网络走手机的移动蜂窝网络
- 查看电脑此时分配到的共享网络IP,手机端直接访问
http://[该IP]:5000即可。
内容的提问来源于stack exchange,提问作者LJG
相关产品推荐
相关产品推荐

