Mitmproxy как запустить из скрипта и сохранить дампы в файл - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь найти способ запустить Mitmproxy из скрипта Python (что я сделал) и сохранить любой трафик в файл дампа (с которым мне нужна помощь).

Посмотрев в гугл, посмотрев на проблемы с mitmproxy git и прочитав пример кода, у меня получилось следующее:

from mitmproxy import proxy, options
from mitmproxy.tools.dump import DumpMaster
from mitmproxy.addons import core


class AddHeader:
    def __init__(self):
        self.num = 0

    def response(self, flow):
        self.num = self.num + 1
        print(self.num)
        flow.response.headers["count"] = str(self.num)


addons = [
    AddHeader()
]

opts = options.Options(listen_host='127.0.0.1', listen_port=8080)
pconf = proxy.config.ProxyConfig(opts)

m = DumpMaster(None)
m.server = proxy.server.ProxyServer(pconf)
# print(m.addons)
m.addons.add(addons)
print(m.addons)
# m.addons.add(core.Core())

try:
    m.run()
except KeyboardInterrupt:
    m.shutdown()

Проблема в том, что это создает ошибку AttributeError: No such option: body_size_limit, которая, по-видимому, смягчается с помощью master.addons.add(core.Core), но этот основной аддон уже существует в DumpMaster, так что возникает другая ошибка.

Проверка аддонов, которые в данный момент загружаются DumpMaster Я вижу, что аддон сохранения в файл загружен, но я не понимаю, как получить к нему доступ, чтобы любой трафик, проходящий через прокси, независимо от того, является ли он запросом , response, ws или tcp могут быть записаны в файл дампа

Спасибо!

Вот отредактированный список загруженных аддонов

  • mitmproxy.addons.streambody.StreamBodies объект в 0x111542da0>
  • mitmproxy.addons.save.Save объект в 0x111542dd8>
  • mitmproxy.addons.upstream_auth.UpstreamAuth объект в 0x111542e10>

1 Ответ

0 голосов
/ 21 ноября 2018

просто добавьте эти 2 строки после opts = options.Options (listen_host = '127.0.0.1', listen_port = 8080)

opts.add_option("body_size_limit", int, 0, "")
opts.add_option("keep_host_header", bool, True, "")
...