MITMPROXY делает вывод в файл доступным для чтения человеком

Моя система:

Ubuntu 16.04
Mitmproxy version 3.0.4
Python version 3.5.2

Я успешно установил mitmproxy с сайта docs.mitmproxy.org на свой сервер. Но теперь я запутался, как сохранить лог mitmproxy в файл? Я пытаюсь использовать mitmdump --mode transparent --showhost -p 9001 -w output_file

Пока я открываю output_file, он не читается человеком. Я читал документы и пробовал скрипты из Github mitmproxy, но без понятия.

Кто-нибудь знает, как сохранить лог mitmproxy в файл, но удобочитаемый?
Спасибо!


person semangatTA    schedule 07.05.2018    source источник


Ответы (1)


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