有没有一种方法可以阻止Google Analytics(分析)将开发工作视为热门?


151

我已在页面底部添加了所需的JavaScript,以便可以使用Google Analytics(分析)。唯一的问题是,我确定它将所有开发工作都算是热门。每天我可能会看到其中一些页面一百次,这确实会使我的阅读出现偏差。是否可以通过特定的IP地址将其关闭,还是应该在构建过程中构建此东西,以便仅在构建进行部署时才添加它?


6
您正在开发什么语言/技术?因为如果主机名= 127.0.0.1localhost(或任何本地实例),则可以在不显示分析脚本块的情况下执行某些操作。应该是一行服务器端代码...
davewasthere 2009年

4
我不知道为什么有人想要将其移至SuperUser-显然这是一个编程/开发问题。
Thomas Owens

我正在使用asp.net,vs2005,它是一个Web项目。
uriDium

您可以将其用作脚本阻止程序,例如umatrixuBlock。它将阻止所有广告脚本,包括Google的分析脚本。
西蒙

Answers:


102

是的,您进入“ Google Analytics(分析)设置”,编辑您的网站,然后通过“ +添加过滤器”来定义不包含IP地址的过滤器。

过去的数据不会在应用过滤器的情况下重新生成,因此您只能从中受益。


17
[新创建的]过滤器仅适用于将来的数据。
viam0Zah

1
太好了 我正在积极地做这件事。我还没有真正添加Google Analytics(分析)所需的javascript。我将放置过滤器,然后进行部署。
uriDium

7
只是随机遇到这个问题...我只是在开发环境中使用其他UA-ID。那就是我现在所做的。我认为这比阻止IP地址和其他东西更好。
karry 2012年

3
实际上,还有一种更简单的方法。不过,该技术也仅适用于将来的数据。初始化ga对象时,只需设置一个明确的Cookie域。参考:developers.google.com/analytics/devguides/collection/...
达伦-

2
根据您的开发环境,您还可以排除主机名。我使用asp.net开发,因此排除了包含的所有主机名localhost。如果您通常在子域下具有测试环境,则只需排除该环境即可。
CularBytes '16

205

我喜欢使用javascript的简单方法。它可以在任何地方工作。

<script type="text/javascript">
if (document.location.hostname.search("myproductiondomainname.com") !== -1) {

//google analytics code goes here

}
</script>

3
非常优雅的解决方案:)
Sushant Gupta

28
谢谢。我个人使用if (document.location.hostname == "example.com") { /* ga code */ } else { _gaq = {push: function(arg) {console.log("ga:", arg)}}}-这使我可以在代码中的任何地方安全地使用事件跟踪器和自定义_gaq调用,同时还可以在开发环境中调试GA调用。
seriyPS

1
另一个,稍微更可读的解决方案将是使用正则表达式字面:if(/example\.com/.test(window.location.hostname)) { /* GA code */ }
mjswensen

我更喜欢这种方法,因为如果您拥有蔚蓝的网站(或类似的设置),它可以让您在开发和生产中查看页面。当您转到xxxxx.azurewebsites.net时,IE 不会启动会话。谢谢!简单的修复也花了我5分钟才能投入生产。
Jhayes2118 2014年

11
富勒举例说明了上面提供的解决方案(假设ga是对象名): var ga; if (document.location.hostname == "example.com") { /* GA script here */ } else { console.log("Running non-production google analytics replacement now"); ga = function(arg) { console.log("ga:", arguments);};} ga('create', 'UA-xxxxx', 'auto'); ga('send', 'pageview');
布莱恩

34

2014年,我对所有现有解决方案仍然不满意...

  • IP过滤器需要一个静态IP地址。如果我在家中或在咖啡店工作怎么办?
  • 检查主机名可以消除来自开发环境的影响,但是如果我要调试实时站点该怎么办?
  • 编辑服务器配置很麻烦/高级,并且多个域很复杂。
  • 选择停用扩展功能可以阻止所有网站上的点击,也可以完全阻止任何网站上的匹配,具体取决于您问谁。

因此,我创建了自己的浏览器扩展程序... https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • 无论我走到哪里
  • 它可以在开发环境和实时/公共领域上工作
  • 它只会影响我和我正在开发的网站
  • 一键开启/关闭
  • 可以很容易地确认它确实没有向分析发送任何数据

它通过始终为您选择的域在您的计算机上保留“开发者cookie”来工作。然后,您只需在脚本中检查此cookie,然后再将任何数据发送到Google Analytics(分析)。您可以在扩展程序的设置中为Cookie自定义唯一的名称和值。一组人员可以轻松使用此功能,因此开发人员,内容创建者,校对人员以及组织中的任何其他人员都可以查看页面,而不会夸大统计信息。

如何将代码放入网页的示例...

的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
   }
}

验证HOST名称等于您的活动站点的域(“ mydomain.com”),可以确保从测试域(例如“ localhost”或“ beta.mydomain.com”)进行查看时,任何访问者都不会发送分析数据。 。在上面的示例中,“ www.mydomain.com”和“ mydomain.com”是我们希望记录访问的两个有效域。

实时站点将按预期方式将数据发送到分析,除非找到具有匹配值的开发人员Cookie。如果它看到您的设备上设置了唯一的cookie,则您的访问将不会计入Google Analytics(分析)或您希望使用的任何其他分析工具中的总数。

随时分享我的解决方案,并使用我的扩展程序保留这些cookie。


这是一个很好的解决方案。谢谢!
Nate

1
嗨,Seebigs,您能进一步采取行动,而不是要求开发人员更改其分析代码,而是找到一种方法来拦截ga对象并将其替换为模拟对象吗?从理论上讲,您可以在加载JS之后但在运行分析代码之前执行此操作。...存在chrome.google.com/webstore/detail/analytics-blocker/…,但似乎已损坏且不受支持。
jmort253

25

如果您不使用静态IP,则在GA上设置IP过滤器将无济于事。

设置环境变量并有条件地显示它。以下面的Ruby on Rails代码为例:

<% unless RAILS_ENV == "development" %>
    <!-- your GA code -->
<% end %>

您可以在任何操作系统上使用的每种语言/框架来扩展此行为。在PHP上,可以使用getenv函数。在环境变量的Wikipedia页面上进行检查,以了解如何在系统上进行操作。


这是有限的用途,因为它仅在开发机器和被测系统相同时才适用。
JoshJordan

1
认为这可能是使用最广泛的解决方案,尽管您无需将其与“开发”进行比较,而是将其与“生产”进行比较-意思是,只要网站在生产环境中运行,我们就会渲染GA脚本,否则(例如登台服务器,开发或测试服务器)。显然,这不能解决调试实时环境的情况,但是对大多数ppl来说都很好。
miphe

2
您也可以如果ENV [“ RAILS_ENV”] ==“ production”
moeabdol

17

您可以使用此代码

<script>
var host = window.location.hostname;
if(host != "localhost")
{
    // your google analytic code here
}
</script>

16

如果您落后于NAT或由于其他原因而无法将IP分配给Google Analytics(分析),那么最简单的方法是将google Analytics(分析)域设置为localhost(127.0.0.1),从现在开始打开浏览器时,所有请求Google Analytics(分析)将被引导到您的工作站,而无需了解Google Analytics(分析)。


3
先生,这是我见过的最简单的解决方案!从我+1
Nir Levy,2009年

我不推荐这种方法,因为您将开发(可能发布)可能与GA冲突的代码。而且您会得到404个尝试dl脚本的代码,可能会阻塞。
webXL 2012年

@webXL,我的解决方案是完全不下载脚本,它仅用于开发机器,而不用于生产用途(部署主机),请指出在这种情况下,如果根本不使用GA,可能会发生冲突开发的应用程序上的开发机器…
astropanic 2012年

@ astropanic,GA声明了至少一个全局变量,因此有可能覆盖它或被它覆盖。通过将其排除在开发中,您将承担此风险。可能是小风险,但还是可以避免的风险。此外,GA不必跟踪主机名吗?
webXL 2012年

您也可以使用0.0.0.0而不是127.0.0.1
Goyllo

16

我们为开发和质量检查工作设置了第二个Google Analytics(分析)跟踪代码-当您要测试分析集成时,它实际上派上了用场,还确保了您不会流失到生产统计信息中。


我从没想过要这样做,但是我做得越多,我就越喜欢它:)
Ben Cull 2014年

这是否需要大量开销?我的印象是,开发团队只是在不进行任何代码更改的情况下直接将预览和暂存发布到实时生产中。
MXMLLN 2015年

2
@MXMLLN-这取决于您进行配置管理的程度。在我们的例子中,这只是我们已经在处理的配置文件中的另一行,ymmv。
Wyatt Barnett

@WyattBarnett-谢谢,我看看他们的想法。
MXMLLN 2015年

14

解决方案是使用Google跟踪代码管理器跟踪(GTM)处理您的Google Analytics(分析)。这样一来,您只需在生产域上触发Google Analytics(分析),而无需在网站的代码中编写任何条件代码。方法如下:

在GTM中,设置一个仅在页面主机名包含您的生产域时才会触发的触发器。

在此处输入图片说明

然后为Universal Analytics设置标签,并将其触发器设置为您刚刚创建的标签。

在此处输入图片说明



6

在您的Google Analytics(分析)异步代码运行以禁用对该网络载体ID的跟踪之前,添加以下行:

window['ga-disable-UA-XXXXXX-Y'] = true;

UA-XXXXXX-Y 对应于您要禁用跟踪的网络载体ID。

来自:https : //developers.google.com/analytics/devguides/collection/gajs/


我正在一个有很多页面的网站上工作,每个页面都有自己的GA JS代码副本。我最终将在页脚中进行动态调整,但与此同时,我是否可以将其添加到页眉中的页面上方,从而禁用所有对GA的调用?
codecowboy15年

是的,只要您提供在页面下方使用的同一网络载体ID。
AJP

5

要禁用本地主机点击,只需创建一个过滤器即可排除本地主机。转到管理->属性->查看设置。查看以下屏幕截图以获取帮助。

ga view排除localhost

如果您使用非静态IP来访问,则要自己禁用生产URL匹配,您可以使用Chrome扩展程序(例如Developer Cookie)跳过运行Google Analytics(分析)代码(如果您使用的话)。

我个人不执行此操作,因为我使用的是广告拦截器,该广告拦截器已经在我的浏览器上屏蔽了Google Analytics(分析)。


4

使用自定义指标过滤所有这些流量。

在应用中初始化GA时,请设置一个自定义标志来跟踪显影情况:

// In your header, after the GA code is injected
if( <your_code_to_check_if_is_dev> ) {
  ga('set', 'is_developer', 1 );
}

然后在您的Google Analytics(分析)帐户中添加过滤器以删除这些结果。

管理员>帐户>所有过滤器>添加过滤器>用户定义

在此处输入图片说明


3

我将Ad Blocker用于Firefox,它可以专门阻止Google Analytics(分析)跟踪脚本。由于firefox是我的主要开发浏览器,因此在我需要在其他浏览器中测试我的工作之前,它非常有用。


2

可能对您没有帮助,但我通过编写一个自定义ASP.NET服务器控件来注入所需的JavaScript,从而解决了此问题。然后,我将实时URL添加到web.config中,然后仅在主机名与web.config中的实时URL匹配时才使控件可见。


1

就像别人提到的那样,您可以在本地托管g​​oogle-analytics.com域,也可以设置一个功能来查看您是否在开发网络中工作。

请记住,如果没有加载http://www.google-analytics.com/ga.js,并且您使用了onclick javascript函数来帮助跟踪页面元素上的点击。

IE:onclick =“ javascript:pageTracker._trackPageview('/ made / up / folder / reference');

您将遇到JavaScript错误,这将阻止jQuery或其他强大的JavaScript函数正常运行。


1

作为对此的附加选择,我有一台开发服务器,其中包含许多不同的站点和开发人员。这意味着我对3个主要选项并不特别满意

  • 托管文件-许多开发人员有问题,容易出现人为错误
  • 每个站点上的if / else开发块等
  • 在GA网站上进行配置-一些客户拥有自己的GA帐户;必须在每个站点上完成,有可能被遗忘/忽略

我没有以其他方式在此处实现其他选项,而是通过以下方式解决了该问题。在全局httpd.conf中(而不是特定于站点的),我使用了apache模块mod_substitute来模拟另一个答案中的hosts文件修复所产生的效果,但是对于每个开发站点和每个开发人员都是自动的。

启用模块

CentOS:打开/etc/conf/httpd.conf并添加以下行

LoadModule substitute_module modules/mod_substitute.so

Ubuntu / Debian:运行以下命令

sudo a2enmod substitute

启用模块后,将以下行添加到httpd全局配置文件中

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为页面提供服务时,将所有与.google-analytics.com匹配的文本替换为.127.0.0.1,以便您的页面呈现类似于以下示例的分析代码

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);
})();

1

我知道这篇文章已经过时了,但是没有一个解决方案可以满足我的需求。我不仅要从GA(和FB)中删除开发人员,而且还希望公司中的某些人员不被GA和FB计入。因此,我想为那些人提供一种相对简单的方法,让他们在没有插件的情况下排除自己的分析范围,或者排除域ip(因为拥有笔记本电脑的人徘徊)。

我创建了一个网页,用户可以访问该网页,然后单击链接以选择退出GA和FB跟踪。它为该网站放置一个cookie。然后,我检查该Cookie,以确定是否应将数据发送到GA和FB。

我最初是在名为Dahlia的网站上进行设置的,该网站是希腊东正教婚礼和洗礼的精品店。

这是代码:

我将以下代码放在所有网页的标题中:

<script>
//put in your google analytics tracking id below:
var gaProperty = 'UA-XXXXXXXX-X';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
  window['ga-disable-UA-7870337-1'] = true;  //This disables the tracking on Weebly too.
} else {
   //put in your facebook tracking id below:
  fbq('init', 'YYYYYYYYYYYYYYY');
  fbq('track', 'PageView');
}
</script>

确保在提供的空格中添加您的GA和FB跟踪ID。这最初是为Weebly(购物CMS)网站编写的。因此,如果您不在Weebly上,则可以删除提及weebly的行。

然后,我创建了一个名为“请勿跟踪”的新网页,标题中包含以下代码:

<script>
//put in your own google analytics tracking id below:
var gaProperty = 'UA-XXXXXXXX-X';
var disableStr = 'ga-disable-' + gaProperty;

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true;
  gaOptoutCheck();
}

// Check Opt-out function
function gaOptoutCheck() {
    var name = "ga-disable-"+gaProperty+"=";
    var ca = document.cookie.split(';');
    var found = "false";
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) found = "true";
    }
    if (found == "true") alert("Cookie is properly installed");
    else alert("COOKIE NOT FOUND");
}
</script>

以及体内的以下代码:

<a href="javascript:gaOptout()">Click here to opt-out of Google and Facebook Analytics</a>
<br><br>
Please visit this page on every computer, laptop, phone, tablet, etc. that you use; 
and for all browser you use on each of those devices.
<br><br>
If you ever remove cookies from browser, you will need to repeat this process for that browser.
<br><br><br>
<a href="javascript:gaOptoutCheck()">
Click to check if cookie is set</a>
<br><br>

这是我为Weebly网站撰写的全文

希望这对某人有帮助!


1

如果您有一个React应用程序,并且已经弹出该应用程序(这也适用于CRA)。您可以在index.html页面中使用以下代码段。

<script type="text/javascript">
  if("%NODE_ENV%"==="production"){
  //your analytics code
  }

0

获取请求主机变量。

因此,将if语句环绕在分析JavaScript上,如下所示(Ruby式伪代码):

<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>

0

我为我的本地开发设置了一个PHP变量,当我从事某些工作时,它为我提供了提供数据/反馈等功能的终端。

我使用XAMPP,以便为tmp提供一个env变量,如下所示:

$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 ?>

该解决方案确实会弄乱JS中的事件和转化跟踪代码,因为您没有要调用的“ ga”对象。这样,整个JS可能会崩溃并导致许多其他问题。
omgitsdrobinoha

0

今天,在与我的计算机不同的计算机上,我注意到μBlockOrigin for Chrome默认情况下会阻止Google AdSense。经过一番谷歌搜索,我发现了这篇文章。它还指出,默认情况下,μBlockOrigin Firefox,μAdblock(用于Firefox)和Ad Muncher(用于Windows)会阻止AdSense。列出的其他大多数选项都可以配置为阻止AdSense。

这似乎行得通并且很有用,因为我的IP通常是动态的,因此只要我登录到Chrome,Chrome扩展程序就可以跟随我。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.