From 8679ee0ea71d5d603c9465d23f1a18b3787fee30 Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Fri, 2 May 2014 18:30:28 -0700 Subject: [PATCH] disable google analytics by setting a breakpoint in www.google-analytics.com/analytics.js and replacing the content of that script when the breakpoint is hit --- umbra/umbra.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/umbra/umbra.py b/umbra/umbra.py index cfc8f30..1cc0461 100755 --- a/umbra/umbra.py +++ b/umbra/umbra.py @@ -90,6 +90,14 @@ class UmbraWorker: self.logger.debug('sending message to {}: {}'.format(websock, msg)) websock.send(msg) + msg = dumps(dict(method="Debugger.enable", id=next(self.command_id))) + self.logger.debug('sending message to {}: {}'.format(websock, msg)) + websock.send(msg) + + msg = dumps(dict(method="Debugger.setBreakpointByUrl", id=next(self.command_id), params={"lineNumber": 1, "urlRegex":"https?://www.google-analytics.com/analytics.js"})) + self.logger.debug('sending message to {}: {}'.format(websock, msg)) + websock.send(msg) + msg = dumps(dict(method="Page.navigate", id=next(self.command_id), params={"url": self.url})) self.logger.debug('sending message to {}: {}'.format(websock, msg)) websock.send(msg) @@ -121,6 +129,18 @@ class UmbraWorker: self.logger.debug("{} console {} {}".format(websock.url, message["params"]["message"]["level"], message["params"]["message"]["text"])) + elif "method" in message and message["method"] == "Debugger.paused": + self.logger.debug("debugger paused! message={}".format(message)) + scriptId = message['params']['callFrames'][0]['location']['scriptId'] + + msg = dumps(dict(method="Debugger.setScriptSource", id=next(self.command_id), params={"scriptId": scriptId, "scriptSource":"console.log('google analytics is no more!');"})) + self.logger.debug('sending message to {}: {}'.format(websock, msg)) + websock.send(msg) + + msg = dumps(dict(method="Debugger.resume", id=next(self.command_id))) + self.logger.debug('sending message to {}: {}'.format(websock, msg)) + websock.send(msg) + class Umbra: logger = logging.getLogger('umbra.Umbra')