Content-Dispositionを除去するプロキシスクリプト
Google ChromeだとIEのように一時フォルダにファイルを保存して開くということができないので、ダウンロード専用のファイルを見るのがちょっと面倒。ということで、HTTPヘッダから、Content-Dispositionを除去し、Content-Typeをapplication/octet-streamから適当なものに差し替えるプロキシを書いた。セキュリティとか著作権法とかが怖いので、設置したスクリプトを公開するのはやめておこう……。
#!/usr/bin/python import cgi, urllib, sys page = """<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Content-Disposition Remover</title> </head> <body style="text-align:center"> <h1>Content-Disposition Remover</h1> <form method="get"> <input type="text" name="url" style="font-size:x-large"> <input type="submit" style="font-size:x-large"> </form> </body> </html>""" mime = { "txt": "text/plain", "htm": "text/html", "html": "text/html", "xml": "text/xml", "js": "text/javascript", "vbs": "text/vbscript", "css": "text/css", "gif": "image/gif", "jpg": "image/jpeg", "jpeg": "image/jpeg", "png": "image/png", "cgi": "application/x-httpd-cgi", "doc": "application/msword", "pdf": "application/pdf", } def main(): url = cgi.FieldStorage().getfirst("url","") if url=="": print 'Content-Type: text/html' print print page else: try: d = urllib.urlopen(url) info = d.info() if "content-type" in info and info["content-type"]=="application/octet-stream": info["content-type"] = "text/plain" if "content-disposition" in info: ex = info["content-disposition"].split(".")[-1].lower() # :) if ex in mime: info["content-type"] = mime[ex] if "content-disposition" in info: del(info["content-disposition"]) for i in d.info(): print "%s: %s"%(i,d.info()[i]) print while True: b = d.read() if b=="": break sys.stdout.write(b) except Exception, e: print "Content-Type: text/html" print print "Error" print e.message main()