使用 mitmproxy 内联脚本记录所有 http 请求

Logging all http request with mitmproxy inline script

我正在尝试使用 mitmproxy 记录每个 http 站点,但我的内联脚本给出了这个错误 TypeError: request() missing 1 required positional argument: 'flow' 这是我的代码的预览。我确实正确设置了我的代理,并且 httplogs.txt 文件与内联脚本位于同一目录中,但我不明白此函数有什么问题。

import sys

def request(context,flow):
    f = open('httplogs.txt', 'a+')
    f.write(flow.request.url + '\n')
    f.close()

假设您使用的是更新版(2017 年 1 月)

tl;dr

从方法签名中删除 context


7 个月前,mitmproxy 从 response[ 中删除了 context =40=]方法:

https://github.com/mitmproxy/mitmproxy/commit/c048ae1d5b652ad4778917e624ace217e1ecfd91

所以更新的示例脚本在这里:

https://github.com/mitmproxy/mitmproxy/blob/1.0.x/examples/simple/add_header.py

def response(flow):
    flow.response.headers["newheader"] = "foo"

谢谢,解决了!

这是我更新的用于记录请求和响应的片段 headers:

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

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

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