有没有办法阻止Google Analytics(分析)将开发工作视为点击?
我已经将我需要的JavaScript添加到页面的底部,以便可以使用Google Analytics(分析)。 唯一的问题是,我确信它将我所有的开发工作都算作点击。 鉴于我可能每天看到一百次这样的页面,这实际上会歪曲我的阅读。 有没有办法把它从一个特定的IP地址关掉,或者这是应该build立到我的生成过程中,所以它只会被添加时,我build立部署?
是的,你进入分析设置,编辑您的网站,并+添加filter来定义一个filter,排除你的IP地址。
过去的数据不会在应用filter的情况下重新生成,所以您只能从中获益。
我喜欢使用JavaScript的简单方法。 它适用于任何地方
<script type="text/javascript"> if (document.location.hostname.search("myproductiondomainname.com") !== -1) { //google analytics code goes here } </script>
如果您不使用静态IP,那么在GA上设置IPfilter不能帮助您。
设置一个环境variables并有条件地显示它。 以下面的Ruby on Rails代码为例:
<% unless RAILS_ENV == "development" %> <!-- your GA code --> <% end %>
您可以在任何操作系统上使用每种语言/框架来扩展此行为。 在PHP上,你可以使用getenv函数。 查看环境variables的维基百科页面,了解如何在您的系统上继续。
这是2014年,我仍然不满意所有现有的解决scheme…
- IPfilter需要一个静态IP地址。 如果我在家里或咖啡店工作,会怎么样?
- 检查主机名可以消除开发环境中的命中,但是如果我正在debugging活动站点呢?
- 编辑服务器configuration是恼人的/高级的,而且多个域是复杂的。
- select退出扩展要么阻止所有网站点击或根本不取决于你问谁。
所以,我创build了自己的浏览器扩展… https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn
- 无论我走到哪里,它都伴随着我
- 它适用于开发环境和生活/公共领域
- 它只影响我和我正在开发的网站
- 它点击打开/closures
- validation它确实没有将任何数据发送到分析很容易
它通过在您的机器上始终设置“开发人员cookie”来保护您所select的域名。 然后,您只需在脚本中检查此Cookie,然后再将任何数据发送到Google Analytics(分析)。 您可以为扩展程序设置中的Cookie自定义自己的唯一名称和值。 这可以被一组人轻松使用,因此开发者,内容创build者,校对者和组织中的其他人都可以查看页面,而不会使统计数据膨胀。
如何将代码放入您的网页的示例…
JavaScript的
if (window.location.host==="mydomain.com" || window.location.host==="www.mydomain.com") { if (document.cookie.indexOf("COOKIENAME=COOKIEVALUE") === -1) { // Insert Analytics Code Here } }
PHP
if ($_SERVER['HTTP_HOST']==="mydomain.com" || $_SERVER['HTTP_HOST']==="www.mydomain.com") { if (@$_COOKIE["COOKIENAME"] !== "COOKIEVALUE") { // Insert Analytics Code Here } }
validation主机名称等于您的现场网站(“mydomain.com”)的域名确保分析数据永远不会由任何访问者在从诸如“localhost”或“beta.mydomain.com”的testing域查看时发送。 在上面的例子中,“www.mydomain.com”和“mydomain.com”是我们希望访问被logging的两个有效域。
实时网站按照预期将数据发送到分析,除非find具有匹配值的开发者cookie。 如果您在自己的设备上看到了此Cookie,那么您的访问将不会计入Google Analytics(分析)中的总计或任何您喜欢使用的其他分析工具。
随意分享我的解决scheme,并使用我的扩展来保持这些cookie设置。
如果您在NAT后面或者因为其他原因不能将您的IP分配给Google Analytics,那么最简单的方法是将google分析域设置为localhost(127.0.0.1),从现在开始您的浏览器,所有请求Google Analytics(分析)将直接转到您的工作站,但不了解Google Analytics(分析)。
我们为开发和QA工作设置了第二个Google Analytics分析跟踪代码 – 当您想testing分析集成时,实际上派上用场,同时确保没有渗透到生产统计信息中。
有几个Chrome扩展程序可以帮助您做到这一点,例如https://chrome.google.com/webstore/detail/fadgflmigmogfionelcpalhohefbnehm
如果你的IP地址不是静态的话非常方便。
你可以使用这个代码
<script> var host = window.location.hostname; if(host != "localhost") { // your google analytic code here } </script>
我使用Firefox的广告拦截器,它可以专门阻止Google分析跟踪脚本。 由于Firefox是我的主要开发浏览器,它工作很好,直到我需要在其他浏览器中testing我的工作。
在您的Google Analytics(分析)asynchronous代码运行之前添加此行,以禁用该networking媒体资源ID的跟踪:
window['ga-disable-UA-XXXXXX-Y'] = true;
UA-XXXXXX-Y
对应于您想禁用跟踪的networking媒体资源ID。
来自: https : //developers.google.com/analytics/devguides/collection/gajs/
可能对你没有帮助,但我通过编写一个自定义的ASP.NET服务器控件来注入所需的JavaScript来解决这个问题。 然后,我将实时URL添加到web.config中,然后只在主机名与web.config中的实时URL匹配时才使控件可见。
就像人们提到的那样,您可以在本地托pipegoogle-analytics.com域,也可以设置一个function来查看您是否在开发networking中工作。
请记住,如果http://www.google-analytics.com/ga.js未加载,并使用onclick javascript函数来帮助跟踪页面元素的点击次数。
IE:onclick =“javascript:pageTracker._trackPageview('/ made / up / folder / reference');
你将有JavaScript错误,将阻止jQuery或其他强大的JavaScriptfunction运作。
作为一个额外的select,我有一个开发服务器有很多不同的网站和开发人员。 这意味着我对3个主要选项并不特别满意
- 主机文件 – 与许多开发人员有问题,并打开人为错误
- if / else开发块在每个站点等
- GA网站上的configuration – 有些客户有自己的GA帐户; 必须在每个可能被遗忘/忽略的地点完成
我没有在其他答案中实现各种选项,而是以如下方式处理这个问题。 在全局的httpd.conf(而不是特定的站点)中,我使用了apache模块mod_substitute来模拟主机文件在另一个答案中已经修复的效果,但是对于每个开发站点以及每个开发人员都会自动进行修改。
启用该模块
CentOS :打开/etc/conf/httpd.conf
并添加以下行
LoadModule substitute_module modules/mod_substitute.so
Ubuntu / Debian :运行以下命令
sudo a2enmod substitute
一旦启用了该模块,请将以下行添加到您的httpd全局configuration文件中
CentOS : /etc/conf/httpd.conf
Ubuntu / Debian : /etc/apache2/httpd.conf
# Break Google Analytics AddOutputFilterByType SUBSTITUTE text/html Substitute "s|.google-analytics.com|.127.0.0.1|n"
然后重新启动Apache
CentOS : service httpd restart
Ubuntu / Debian : /etc/init.d/apache2 restart
当apache提供页面时,将所有与.127.0.0.1匹配的文本replace为.google-analytics.com,以便您的页面呈现分析代码,类似于以下示例
var _gaq = _gaq || []; _gaq.push(['_setAccount', '']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.127.0.0.1/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
获取请求主机variables。
因此,围绕分析的JavaScript包装一个if语句像这样(Ruby-esque的伪代码):
<body> <shtuff>dfsfsdf</shtuff> if not (request.host == 'localhost') #analytics code here elsif (request.host == the server's ip/domain) #analytics code here else #do nothing end </body>
我有一个为我的本地开发设置的PHPvariables,当我在做东西的时候,给了我一个提供数据/反馈等的terminal。
我使用XAMPP,因此对于tmp有一个envvariables,如下所示:
$isLocal = (getenv("tmp") == '\xampp\tmp') ? true : false;
这在我的生产服务器上不存在,因为xampp没有被使用
if($isLocal){ // do something, eg. load my terminal }
…具体到这个问题:
<?php if(!$isLocal){ ?> <!-- Insert Google Analytics Script Here --> <?php } // end google analytics local check ?>
解决scheme是使用Google跟踪代码pipe理器 (GTM)来处理您的Google Analytics。 这将允许您只在生产域上触发Google Analytics,而无需在网站代码中编写任何条件。 以下是如何做到这一点:
在GTM中,设置只有当页面主机名包含您的生产域时触发的触发器。
然后为Universal Analytics设置一个标签,并将其触发器设置为您刚创build的那个。
今天,在与我自己不同的计算机上,我注意到Chrome的μBlockOrigin默认阻止了Google AdSense。 谷歌search后,我发现这篇文章 。 它还logging了μBlockOrigin Firefox,用于Firefox的μAdblock和用于Windows的Ad Muncher,默认情况下阻止AdSense。 大多数其他选项被列为可configuration来阻止AdSense。
这似乎工作,是有用的,因为我的IP往往是dynamic的,所以只要我login到Chrome Chrome扩展可以跟着我。
使用自定义指标来过滤所有这些stream量。
当您在应用程序中初始化GA时,请设置一个自定义标志来跟踪开发人员:
// In your header, after the GA code is injected if( <your_code_to_check_if_is_dev> ) { ga('set', 'is_developer', 1 ); }
然后在GA帐户中添加一个过滤条件,以删除这些结果。
pipe理员>帐户>所有filter>添加filter>用户定义