diff options
author | Jakub Nawalaniec <pielgrzym@prymityw.pl> | 2013-01-13 20:54:16 +0100 |
---|---|---|
committer | Jakub Nawalaniec <pielgrzym@prymityw.pl> | 2013-01-13 20:54:16 +0100 |
commit | a658dba4106ddcd84f2a5275efa51867e6b5fa0a (patch) | |
tree | b4516bc6687c6af23f3dd20f39ce4f57a947ff53 /examples/iframe_injector | |
parent | 060e3198bca48f327984b2d1d73a5d4592866736 (diff) | |
download | mitmproxy-a658dba4106ddcd84f2a5275efa51867e6b5fa0a.tar.gz mitmproxy-a658dba4106ddcd84f2a5275efa51867e6b5fa0a.tar.bz2 mitmproxy-a658dba4106ddcd84f2a5275efa51867e6b5fa0a.zip |
New example - standalone proxy injecting iframes into responses
Diffstat (limited to 'examples/iframe_injector')
-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) |