1. 程式人生 > >MITMProxy如何配置二次代理

MITMProxy如何配置二次代理

圖片 不同的 根據 available 不用 4.0 二次 images img

前序:

mitmproxy真的很強大,或許是大家都各自使用,或者沒有相關的需求,導致我廢了很大精力找了很久的資料都很難找到二次代理的配置方法,看了很久源代碼加上搜了很久的資料,最終讓我終於找到方法,下面記錄一下,大家就不用跟我一樣踩坑了。


以下配置使用mitmproxy版本信息如下

Mitmproxy: 4.0.4
Python:    3.6.3

配置步驟實際相當簡單,但所有步驟缺一不可:

第一步 命令行啟用upstream模式

mitmdump --mode upstream:http://default-upstream-proxy.local:8080/ -s ./change_upstream_proxy.py

第二步 mitmdump腳本根據所需定義規則跳轉不同的二級代理

def request(flow: http.HTTPFlow) -> None:
    if flow.request.method == "CONNECT":
        # If the decision is done by domain, one could also modify the server address here.
        # We do it after CONNECT here to have the request data available as well.
        return
        client_ip = flow.client_conn.address[0]
        if ‘ip.cn‘ in flow.request.url:
                ctx.log.info(flow.request.url)
                proxy =("localhost", 8888)
        else:
                proxy = ("localhost", 3800)
    # 這裏配置二級代理的ip地址和端口
    if flow.live:
        flow.live.change_upstream_proxy_server(proxy)

第三步 測試結果

設備連接mitmproxy後,訪問http://www.ip.cn 及 http://httpbin.org/ip
技術分享圖片
技術分享圖片

MITMProxy如何配置二次代理