#!/usr/bin/env python """ This example shows how to build a proxy based on mitmproxy's Flow primitives. Note that request and response messages are not automatically replied to, so we need to implement handlers to do this. """ import os from libmproxy import proxy, flow class MyMaster(flow.FlowMaster): def run(self): try: flow.FlowMaster.run(self) except KeyboardInterrupt: self.shutdown() def handle_request(self, f): f = flow.FlowMaster.handle_request(self, f) if f: f.reply() return f def handle_response(self, f): f = flow.FlowMaster.handle_response(self, f) if f: f.reply() print f return f config = proxy.ProxyConfig( cacert = os.path.expanduser("~/.mitmproxy/mitmproxy-ca.pem") ) state = flow.State() server = proxy.ProxyServer(config, 8080) m = MyMaster(server, state) m.run()