使用flask和requests實現http代理服務器

代碼:

# -*- coding: utf-8 -*-
from contextlib import closing
import requests
from flask import Flask, request, Response

app = Flask(__name__)


@app.before_request
def before_request():
    url = request.url
    method = request.method
    data = request.data or request.form or None
    headers = dict()
    for name, value in request.headers:
        if not value or name == 'Cache-Control':
            continue
        headers[name] = value

    with closing(
        requests.request(method, url, headers=headers, data=data, stream=True)
    ) as r:
        resp_headers = []
        for name, value in r.headers.items():
            if name.lower() in ('content-length', 'connection',
                                'content-encoding'):
                continue
            resp_headers.append((name, value))
        return Response(r, status=r.status_code, headers=resp_headers)

app.run(port=8007, debug=True)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 實際環境 系統環境 macOS Sierra(10.12.5) Apache Apache/2.4.25 (Uni...
    boborz閱讀 18,953評論 1 23
  • 昨天很晚才到達的青島,第一次帶孩子坐飛機,還是挺坎坷的。先是因為天氣原因,在機場延誤三個多小時,小家伙因為第一次到...
    D055小倩閱讀 178評論 0 0
  • 致自己: 2016年,辛苦了整整一年,該好好地謝謝自己。 謝謝自己,面對壓力的時候,能堅持下來。 謝謝自己,受到傷...
    玲瓏煦暖的陽光閱讀 305評論 0 0
  • 原文地址:http://www.cnblogs.com/powertoolsteam/p/MVC_knowledg...
    寒劍飄零閱讀 8,628評論 5 170
  • 自以為那樣就會很爽很痛快的方式在別人看來不過就是小孩子的不成熟脾性和愚蠢的方式罷了,何必以卵擊石呢!
    感動在暹羅閱讀 181評論 0 0