MITMPROXY 如何将输出转化为可读性高的文件格式

9

我的系统:

Ubuntu 16.04
Mitmproxy version 3.0.4
Python version 3.5.2

我已经成功从docs.mitmproxy.org安装了mitmproxy,但是现在我不知道如何将mitmproxy日志保存到文件中。我尝试使用mitmdump --mode transparent --showhost -p 9001 -w output_file命令,但是当我打开output_file时,它不可读。我阅读了文档并尝试了来自mitmproxy的Github脚本,但没有线索。请问有人知道如何将mitmproxy日志保存到文件中,并且使其可读吗?谢谢!
2个回答

5

可能您已经注意到了,mitmproxy生成的流以二进制格式呈现。如果您希望以人类可读的格式保存这些流,可以在运行mitmproxy时传递一个脚本来执行此操作。

save.py

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

f = open('/tmp/test/output.txt', 'w')

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

现在运行mitmproxy -s save.py,输出将以人类可读的格式写入output.txt

要注意响应,因为它们可能包含大量二进制数据。但如果您确实想以人类可读的格式编写响应,则可以将f.write(assemble_response(flow.response).decode('utf-8', 'replace'))添加到脚本中。

脚本的示例输出:

❯❯ tail -f output.txt
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947"
Cache-Control: max-age=0

如何转换现有文件? - Frederick Nord
这也可以反过来吗?也就是说,将二进制转换为人类可读格式,然后再将其转换回二进制? - avin

0

一开始我按照@securisec的建议尝试将请求和响应输出到文件,但是遇到了困难。后来我发现用mitmdump -s save.py替换mitmproxy -s save.py就可以了。

一旦我杀掉了mitmdump进程,输出文件就被写入了文件系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接