如何从本地网络外部访问 Flask 测试服务器?

How to access Flask test server from the outside of local network?

我正在通过 web-scraping 项目的代理进行请求实验。 为了测试请求 headers 和内容,我构建了一个简单的烧瓶服务器,如下所示:

from flask import Flask
from flask import request

app = Flask(__name__)


@app.route("/")
def index():
    ret_str = f'<- {request} ->\n' \
              f'<----- HEADERS ----->\n' \
              f'{request.headers}\n' \
              f'<----- DATA ----->\n' \
              f'{request.data}\n'
    print(ret_str)
    return ret_str

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

运行 如果通过 127.0.0.1:5000(使用 app.run())通过本地主机访问并通过请求本地地址10.214.14.222:5000(由ipconfig显示)。

但是如果我尝试通过我的 4G 连接或通过代理访问它,请求将失败。根据 https://ipchecker.io/,我的外部 IP 是 216.94.151.186,但是使用 216.94.151.186:5000 请求我的页面给出'page not found'.

如何从局域网外访问测试服务器?有人可以帮忙吗?

解决方案: 在路由器上设置端口转发并使 运行 flask 服务器 IP-address 的计算机在路由器上静态。

确保在您的路由器中打开端口 5000。

如果您可以访问 linux,您可以使用 nmap 检查哪些端口是开放的,或者去 https://portchecker.co/ 检查端口是否打开5000 已开放。

您需要做的是让您的指定端口在您的路由器上可用。这是通过端口转发完成的。此选项卡的位置可以根据您的路由器提供商进行切换,但完成后您只需访问 This link,它会显示您的 public IP。然后您可以访问:000.00.000.00:5000 <-- 将零替换为 public IP.

您可以尝试使用 ngrokngrok_web_site