【发布时间】:2015-09-08 09:00:34
【问题描述】:
我们办公室有一个过滤规则,阻止客户下载音频和视频文件。此规则是使用 Kerio 服务器设置的。
例如,当我输入一个指向 .mp4 文件的直接链接时,我会从这个 Kerio 防火墙面对这个页面:
好吧,为了绕过这个过滤规则,我在网络服务器上使用flask编写了一个python程序,以接收该文件的地址作为地址栏中的参数,将其下载到该服务器上,将其扩展名更改为非音频/非视频扩展(例如.fk、.pdf等)然后发给我!
这是程序:
__init__.py:
# encoding=utf8
from flask import Flask
from flask import send_file
import Downup
app = Flask(__name__)
app.debug = True
downupper = Downup.Downup()
@app.route('/<path:path>')
def test_1(path):
url = "http://"+ path[6:]
file_addr = downupper.downup(url)
return send_file(file_addr, mimetype=None, as_attachment=False, attachment_filename=None, add_etags=True, cache_timeout=None, conditional=False)
#return file_addr
@app.route('/test_2')
def test_2():
return '<html><body><h1>Hi!</h1></body></html>'
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
Downup.py
import os
import urllib
import random
class Downup():
def __init__(self):
self.download_path = "/var/lib/openshift/55ed2d400c1e6677a50001d1/app-root/data/"
def downup(self, url):
file_downloader = urllib.URLopener()
file_name = str(random.randint(1,99999999999)) + "-" + "change .fk to " + str(url)[-4:] +".fk"
try:
file_downloader.retrieve(url, self.download_path + file_name)
return self.download_path + file_name
except:
return "Failed!"
问题是我还是面对之前的过滤页面:
如您所见,我将文件地址作为参数传递给我的应用程序(此处为:fcuk-kerio.rhcloud.com),它以不同的扩展名下载到服务器上,并以none 作为其Mime 发送,但还是失败了。
请注意,我检查了主机,我看到我的文件已下载到那里:
这是日志:
请注意,我可以使用 VPN 和代理服务器绕过 Kerio 服务器,但我想使用上述方法。
【问题讨论】:
标签: python python-2.7 flask mime-types