Как вы, наверное, заметили, 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
person
securisec
schedule
12.07.2020