diff --git a/examples/iframe_injector b/examples/iframe_injector new file mode 100755 index 000000000..6dd28674c --- /dev/null +++ b/examples/iframe_injector @@ -0,0 +1,50 @@ +#!/usr/bin/env python +""" + Zap encoding in requests and inject iframe after body tag in html responses. + Usage: + iframe_injector http://someurl/somefile.html +""" +from libmproxy import controller, proxy +import os +import sys + + +class InjectingMaster(controller.Master): + def __init__(self, server, iframe_url): + controller.Master.__init__(self, server) + self._iframe_url = iframe_url + + def run(self): + try: + return controller.Master.run(self) + except KeyboardInterrupt: + self.shutdown() + + def handle_request(self, msg): + if 'Accept-Encoding' in msg.headers: + msg.headers["Accept-Encoding"] = 'none' + msg._ack() + + def handle_response(self, msg): + if msg.content: + c = msg.replace('
', '' % self._iframe_url) + if c > 0: + print 'Iframe injected!' + msg._ack() + + +def main(argv): + if len(argv) != 2: + print "Usage: %s IFRAME_URL" % argv[0] + sys.exit(1) + iframe_url = argv[1] + config = proxy.ProxyConfig( + cacert = os.path.expanduser("~/.mitmproxy/mitmproxy-ca.pem") + ) + server = proxy.ProxyServer(config, 8080) + print 'Starting proxy...' + m = InjectingMaster(server, iframe_url) + m.run() + +if __name__ == '__main__': + main(sys.argv)