我正在使用mitmproxy来拦截流量。我想要的是能够以字符串形式获取整个请求和响应。我知道您有def response(context, flow)并且HTTPFlow对象具有请求和响应对象。我想要的只是字符串中的类似内容

GET http://www.google-analytics.com/collect?v=1& HTTP/1.1
Header 1: value
Header 2: value

request body


还有这个

HTTP/1.1 301 Moved Permanently
Header 1: value
Header 2: value

response body


现在,我尝试通过请求和响应的不同部分和位来尝试此操作,但这很容易出错。有一个更好的方法吗?

另外,mitm是否可以处理Gzip编码的响应主体?

最佳答案

如果有人碰到这个;上面的答案不适用于mitmproxy4。相反,可以使用以下方法:

from mitmproxy.net.http.http1.assemble import assemble_request

def response(flow):
    print(assemble_request(flow.request).decode('utf-8'))

09-05 01:29
查看更多