【问题标题】:Mitmproxy: Capture HTTP request / response headers?Mitmproxy:捕获 HTTP 请求/响应标头?
【发布时间】:2021-07-08 20:21:12
【问题描述】:

我正在关注following 问题中的代码(转载如下):

def response(flow):
    print("")
    print("="*50)
    print(flow.request.method + " " + flow.request.path + " " + flow.request.http_version)

    print("-"*25 + " request headers " + "-"*25)
    for k, v in flow.request.headers.items():
        print("%-30s: %s" % (k.upper(), v))

    print("-"*25 + " response headers " + "-"*25)
    for k, v in flow.response.headers.items():
        print("%-30s: %s" % (k.upper(), v))

    print("-"*25 + " body (first 100 bytes) " + "-"*25)
    print(flow.request.content[0:100])

我很难理解在使用 mitmproxy 时在哪里可以找到 flow 变量。如何连接 mitmproxy 以便接收请求流?

【问题讨论】:

    标签: python python-requests mitmproxy man-in-the-middle


    【解决方案1】:

    我错了。看起来你传入带有-s 标志的脚本类似于:

    mitmproxy -s myscript.py

    基本上你传入文件名,mitmproxy 会加载它并调用request() 函数,传入你提到的流变量。

    我认为阅读这两页可能会有所帮助。请注意,它们有不同类型的附加组件。我认为您拥有的简单无类 request() 函数将使其成为“脚本”类型。

    https://docs.mitmproxy.org/stable/addons-overview/

    https://docs.mitmproxy.org/stable/addons-scripting/

    文档中还有更多示例。 另外,我发现这个 GitHub 存储库对示例很有帮助:

    https://github.com/KevCui/mitm-scripts

    【讨论】: