在新的mitmproxy中,libmproxy相当于什么?

时间:2017-04-27 08:08:17

标签: python python-3.x mitmproxy

我最终将我的Python版本从2.7升级到3.6.1,并将我的mitmproxy从旧的和好的v0.16升级到最新的版本。

我曾经使用libmproxy来处理使用以下语法通过代理转移的请求:

from netlib.http import decoded
from libmproxy import controller, proxy
from libmproxy.proxy.server import ProxyServer

class StickyMaster(controller.Master):
    def __init__(self, server):
        controller.Master.__init__(self, server)
        self.stickyhosts = {}

    def run(self):
        try:
            return controller.Master.run(self)
        except KeyboardInterrupt:
            self.shutdown()

    def handle_request(self, flow):
        flow.reply()

    def handle_response(self, flow):
        with decoded(flow.response):
            <DO SOMETHING>
        flow.reply()

config = proxy.ProxyConfig(port=8081)
server = ProxyServer(config)
m = StickyMaster(server)
m.run()

据我所知,在新版本中,语法完全不同,我无法找到相关文档,并举例说明如何做到这一点。

有人可以和我分享一些基本代码的例子,比如我上面写的最新版本吗?

2 个答案:

答案 0 :(得分:0)

我们已经弃用了“libmproxy子类化”方法,并且更加灵活地实现了插件。事实上,mitmproxy的大多数核心功能都是作为插件实现的。所以简短的回答是:写一个插件!

我们在http://docs.mitmproxy.org/en/stable/scripting/overview.html介绍了插件开发。对于代码示例,您还应该查看https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple

答案 1 :(得分:-1)

没有官方对等,他们放弃了通过库使用代理而不使用命令和附加/外部应用程序。