Mitmproxy:捕获 HTTP 请求/响应标头?

时间:2021-04-13 18:40:07

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

我正在关注 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 以便您可以接收该请求流?

1 个答案:

答案 0 :(得分:2)

我错了。看起来您传入带有 -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

相关问题