diff options
Diffstat (limited to 'examples/stickycookies')
-rwxr-xr-x | examples/stickycookies | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/stickycookies b/examples/stickycookies new file mode 100755 index 00000000..1ae0e113 --- /dev/null +++ b/examples/stickycookies @@ -0,0 +1,35 @@ +#!/usr/bin/env python +from libmproxy import controller, proxy + +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, msg): + hid = (msg.host, msg.port) + if msg.headers["cookie"]: + self.stickyhosts[hid] = msg.headers["cookie"] + elif hid in self.stickyhosts: + msg.headers["cookie"] = self.stickyhosts[hid] + msg._ack() + + def handle_response(self, msg): + hid = (msg.request.host, msg.request.port) + if msg.headers["set-cookie"]: + self.stickyhosts[hid] = f.response.headers["set-cookie"] + msg._ack() + + +ssl_config = proxy.SSLConfig( + "~/.mitmproxy/cert.pem" +) +server = proxy.ProxyServer(ssl_config, 8080) +m = StickyMaster(server) +m.run() |