【Flask + NATAPP】实现内网穿透的简易文件服务器

使用Flask实现文件下载服务,但这个服务仅能在内网获得,如果想要在外网获得这个服务,正常情况下需要完成购置域名、申请静态IP和域名解析等工作,在文件下载服务需求不大或者对服务稳定性要求不高的情况下,可以考虑通过内网穿透技术实现外网对内网文件下载服务的获取。

NATAPP是一款基于ngrok的国内高速内网映射工具,注册以后可以免费获取2个不同协议的隧道,可用于内网映射。

1. 文件服务器

以下代码实现了一个简易的文件下载服务,在浏览器键入http://127.0.0.1:5000/download即可开始下载test.txt

from flask import Flask, request, send_from_directory
app = Flask(__name__)

@app.route('/download',methods=['GET'])
def testdownload():
    return send_from_directory(r"./",filename="test.txt", as_attachment=True)

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

2. NATAPP注册及购买(免费)隧道

进入NATAPP主页https://natapp.cn/,点击注册按钮完成注册。点击购买隧道页面,购买免费隧道:
在这里插入图片描述

隧道协议选择Web,本地端口即Flask中配置的5000,点击购买后会生成一条隧道信息,包含了authtoken,这个信息用于配置客户端软件:
在这里插入图片描述

3. 下载NATAPP客户端并配置config.ini

NATAPP主页下载客户端软件natapp.exe,同时在软件同级目录创建配置文件config.ini,配置文件的内容如下,需要将步骤2中的authtoken内容粘贴至配置文件内:

#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=                      #对应一条隧道的authtoken
clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=none                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=ERROR                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

4. 运行服务

依次启动Flask服务和NATAPP服务,NATAPP服务启动后命令行窗口中的Forwarding即外网访问地址,注意,每次启动NATAPP服务时该地址都会发生变化

服务启动后,打开手机的蜂窝网络,键入Forwarding地址http://fyy9zi.natappfree.cc/download即可以开始下载文件。
在这里插入图片描述

发布了71 篇原创文章 · 获赞 56 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/baidu_26646129/article/details/105459988