对于python,我需要替代mitmproxy

时间:2018-06-11 00:16:43

标签: python-3.x proxy mitmproxy

我有一个项目,我需要在python中创建一个HTTP数据包拦截器作为代理,但我不能使用mitmproxy,因为它只能使用cli命令而不是内部库。我有一个应用程序,我不能告诉人们运行mitmproxy因为这是应用程序应该在内部执行的操作。我目前正在使用fork从bash启动mitmproxy,但是在为其他操作系统创建此功能方面给我带来了很多麻烦。

出于这个原因,有人知道某种方法来拦截流量作为不依赖于python之外的命令的代理吗?

1 个答案:

答案 0 :(得分:0)

mitmproxy可以加载到您的python代码中。

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()
]

if __name__ == '__main__':

    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)
    # m.addons.add(core.Core())

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

此代码摘自GitHub issue