经常需要一个搭建 httpserver 来远程下载文件,我通常都是使用python 起。

1
2
python3 -m http.server 65534
python2 -m SimpleHTTPServer 65534

但是这样有个坏处就是存在目录遍历,当挂了很多文件的时候容易被溯源和利用。

有个想法,就是只有访问到正确路径 200 才下载,404 则重定向到某个固定链接,用 flask 可以很方便的实现。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/4/28 11:19
# @Author  : niudaii
from flask import Flask, redirect, send_from_directory

app = Flask(__name__)

@app.route('/xxxxx/<name>')
def hello_world(name):
   return send_from_directory(r"./",filename=name,as_attachment=True)

@app.errorhandler(404)
def page_unauthorized(error):
    return redirect("https://www.qianxin.com/")

if __name__ == '__main__':
   app.run(host="0.0.0.0",port=65534, debug=True)#

比如要下载 a.jpg,访问 http://vps:65534/xxxxx/a.jpg 即可