python-3.x - Mitmproxy 如何从脚本启动并将转储保存到文件

标签 python-3.x mitmproxy

我正在尝试找出一种从 python 脚本(我已经完成)启动 Mitmproxy 并将所有流量保存到转储文件(我需要帮助)的方法。

通过谷歌搜索,查看 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 加载的插件,我确实看到保存到文件插件已加载,但我不清楚如何访问它,以便通过代理的任何流量,无论是请求、响应、ws还是tcp都可以写入转储文件

谢谢!

这是已加载插件的编辑列表

  • mitmproxy.addons.streambodies.StreamBodies 对象位于 0x111542da0>
  • mitmproxy.addons.save.将对象保存在0x111542dd8>
  • mitmproxy.addons.upstream_auth.UpstreamAuth 对象位于 0x111542e10>

最佳答案

只需在 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, "")

关于python-3.x - Mitmproxy 如何从脚本启动并将转储保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52107026/

相关文章:

mitmproxy - 如何使用 mitmproxy 查看发送的 header

networking - 如何使用 mitmproxy 将 HTTPS 流量重定向到本地 HTTP 服务器?

proxy - MITMPROXY 使输出对文件可读

python - MITM 代理,获取整个请求和响应字符串

python - Mitmproxy 允许远程连接/禁用 block_global

python-3.x - 在忽略 NaN 的同时替换 pandas.dataframe 中的低频分类值

python-3.x - 适用于 Azure 机器学习 SDK 的 Python SDK v2(预览版)- 如何从 WorkspaceOperations 检索工作区

python - 无法检索列表推导之外的 itertools 迭代器

python - 如何使用 groupby 子句中包含的列创建数据框?

python-3.x - 想知道如何删除 Mac 上所有与 python 相关的文件