基本上,我们在客户的网页上集成了javascript。我们对部署的环境没有太多(或任何)控制权,因此测试我们的集成真正有效的唯一方法是在客户端网页上使用浏览器自动化。我们不想干扰我们的跟踪和分析,更重要的是,不会干扰客户的分析(这对于验证他们的ROI非常重要)。在硒浏览器自动化的情况下阻止Google Analytics(分析)的最便捷,最有效的方法是什么?

我发现了几种方法:


Google Analytics Opt Out Browser Add On
编辑主机文件以将Google Analytics(分析)重定向到localhost(我对这种解决方案不太满意,因为过去它破坏了我们的某些集成文件)
其他浏览器特定的扩展程序,阻止您使用Google Chrome浏览器的GA扩展程序和适用于Firefox的Google Disconnect。


#1 楼

Browsermob-proxy可用于将GA主机列入黑名单,因此甚至不会加载代码。

https://github.com/lightbody/browsermob-proxy

它与Selenium集成良好。

这是一个通用的演讲,描述使用BMP将可拖延自动化的任务列入黑名单(特别提到了Facebook和Twitter小部件,但是我敢肯定GA也可以被列入黑名单):

http://element34.ca/blog/proxy-executor

这是一个很好的指南,可以轻松地在C#中结合使用browsermob-proxy和Selenium。以及用于将除ga.js文件之外的每个请求都列入黑名单的正则表达式(通过这种方式,您可以测试GA是否正常运行,并且假定该文件存在,页面也不会中断)。

@"http://www\.google-analytics\.com/(?!ga\.js).*"


评论


是。代理绝对是解决问题的方法。尤其是当我需要与其他域一起执行此操作时。当我开始工作时,我将编辑并粘贴使其在C#中工作的代码。

–craastad
2013年9月25日下午14:57

#2 楼

它的文档记录不是很好,但是您也可以通过将host-resolver-rules选项传递给chrome并将域映射到localhost或无效IP来实现请求阻止。这样的事情应该适合您:

        ChromeOptions options = new ChromeOptions()
        options.addArguments("--host-resolver-rules=MAP www.google-analytics.com 127.0.0.1")
        def driverInstance = new ChromeDriver(options)


评论


非常感谢你做的这些!需要注意的是,如果用逗号分隔,则可以指定多个主机映射,

–杰索
18年11月20日在16:54

完美,这让我开心!适用于无头的Chrome。可以使用通配符。

–欧文·梅耶(Erwin Mayer)
19年4月10日在18:38

#3 楼

您应该使用Google Analytics(分析)功能排除您的IP地址。此处的联机帮助中对此进行了介绍。

评论


不幸的是,这不是一个选择。我们无权访问客户的GA,也无法可靠地(或在功能上)与他们进行交流以对其进行过滤。另外,它们将用于在许多本地IP地址和云服务上运行的自动化测试中。

–craastad
2013年9月24日15:13

#4 楼

我发现了一种非常简单的方法,可以使用Google Analytics(分析)选择退出附加组件针对Chrome和Firefox做到这一点,这些附加组件基本上适用于所有浏览器。提到这个有关使用硒进行浏览器插件测试的问题,我就可以使用C#的以下代码打开GA /免费的硒会话:

var options = new ChromeOptions();
options.Proxy = proxy;
options.AddExtension(Path.GetFullPath("chrome-ga-optout-extension.crx"));
var driver = new ChromeDriver(options);



var profile = new FirefoxProfile();
profile.AddExtension(Path.GetFullPath("firefox-ga-optou-addon.xpi"));
profile.SetProxyPreferences(proxy);
var driver = new FirefoxDriver(profile);


。可以使用本文的帮助下载Google Chrome扩展名.crx文件。

不幸的是,对于IE这种方法,我们受Selenium的支持,无法实现对IE驱动程序的附加支持。毫无希望的情况。...如果有人能想到IE的解决方案,那就太好了。

评论


还没有尝试过,但是我敢打赌,您可以在测试过程中使用Fiddler API阻止对Google Analytics Server的任何访问。甚至只是将条目添加到您的主机文件中,即可将发送到Google Analytics(分析)服务器的所有流量发送到另一个IP地址。

–山姆·伍兹(Sam Woods)
2013年9月24日18:21



我知道主机文件技巧的条目(如上所述)。这似乎不是一个理想的解决方案(但是我想我没有任何理由)。

–craastad
2013年9月25日在7:05

Fiddler API听起来不错。我确实研究了Fiddler API,以了解如何实际测试未发送的分析调用,但是与仅查看Fiddler的输出相比,值得付出atm的努力。

–craastad
2013年9月25日在7:57

#5 楼

您可以简单地将退出cookie添加到浏览器中。这个答案可能会有帮助。

评论


这个答案最好作为评论,您也有足够的意见要评论!

–IAmMilinPatel
16年7月15日在1:12