有没有办法阻止Google Analytics计算开发工作作为点击?

时间:2009-08-09 18:26:16

标签: development-environment google-analytics

我已将我需要的JavaScript添加到页面底部,以便我可以使用Google Analytics。唯一的问题是我确信它将我的所有开发工作都计为点击量。因为我可能每天看到一些这样的页面一百次,它会真正扭曲我的读数。有没有办法从特定的IP地址关闭它,或者这是应该构建到我的构建过程中的东西,所以只有在构建部署时才会添加它?

23 个答案:

答案 0 :(得分:188)

我喜欢使用javascript的简单方法。它适用于任何地方。

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

//google analytics code goes here

}
</script>

答案 1 :(得分:92)

是的,您进入Analytics设置,编辑您的网站,然后+添加过滤器以定义排除IP地址的过滤器。

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

答案 2 :(得分:29)

这是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。

答案 3 :(得分:25)

如果您不使用静态IP,则在GA上设置IP过滤器无法帮助您。

设置环境变量并有条件地显示它。请使用以下Ruby on Rails代码,例如:

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

您可以在任何操作系统上使用的每种语言/框架扩展此行为。在PHP上,您可以使用getenv函数。请查看Environment Variables上的维基百科页面,了解如何继续使用您的系统。

答案 4 :(得分:15)

如果您支持NAT或由于其他原因无法将您的IP提供给Google Analytics,那么最简单的方法是将google analytics域设置为localhost(127.0.0.1),从现在开启浏览器时,所有对Google Analytics的请求都将直接发送到您的工作站,而不了解Google Analytics。

答案 5 :(得分:14)

我们为开发和质量检查工作设置了第二个谷歌分析跟踪代码 - 当您想要测试分析集成时,它实际上会派上用场,同时也确保您不会泄漏到生产统计数据中。

答案 6 :(得分:13)

您可以使用此代码

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

答案 7 :(得分:8)

解决方案是使用Google Tag Manager(GTM)来处理您的Google Analytics。这样,您只需在生产域中启动Google Analytics,而无需在您网站的代码中编写任何条件。以下是如何做到这一点:

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

enter image description here

然后为Universal Analytics设置标记,并将其Trigger设置为您刚刚创建的标记。

enter image description here

答案 8 :(得分:6)

要禁用localhost命中,只需创建一个过滤器以排除localhost。转到管理->属性->查看设置。查看以下屏幕截图以获取帮助。

ga view exclude localhost

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

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

答案 9 :(得分:5)

有一些Chrome扩展程序会为您执行此操作,例如https://chrome.google.com/webstore/detail/fadgflmigmogfionelcpalhohefbnehm

如果您的IP地址不是静态的,则非常方便。

答案 10 :(得分:4)

在运行Google Analytics异步代码之前添加此行,以禁用对该网络媒体资源ID的跟踪:

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

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

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

答案 11 :(得分:3)

我使用适用于Firefox的广告拦截器,它可以专门阻止Google分析跟踪脚本。由于firefox是我的主要开发浏览器,因此在我需要在其他浏览器中测试我的工作之前,它非常有效。

答案 12 :(得分:2)

使用 custom metric 过滤所有这些流量。

在应用中初始化GA时,请设置自定义标记以跟踪developres:

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

然后在GA帐户中添加过滤器以删除这些结果。

管理员&gt;帐户&gt;所有过滤器&gt;添加过滤器&gt;用户定义

enter image description here

答案 13 :(得分:1)

对于 Google Analytics 4 (GA4),您可以创建规则来定义其流量应标记为内部的 IP 地址。

定义内部流量

路径:管理 > 属性 > 数据流 > 选择您的数据流 > 更多标记设置 > 定义内部流量

enter image description here

定义一个规则来匹配一个或多个代表您内部流量的 IP。

enter image description here

GA4 数据过滤器

路径:管理 > 属性 > 数据设置 > 数据过滤器

您会发现默认过滤器“内部流量”设置为“测试”模式。

更改为“活动”以启用过滤器。

enter image description here

答案 14 :(得分:1)

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

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

答案 15 :(得分:1)

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

答案 16 :(得分:1)

作为一个额外的选项,我有一个开发服务器,有很多不同的网站和开发人员。这意味着我对3个主要选项

并不是特别满意
  • 主机文件 - 许多开发人员存在问题并且容易出现人为错误
  • if / else on 每个网站
  • GA网站上的
  • 配置 - 一些客户拥有自己的GA帐户;必须在每个网站上完成,可能会被遗忘/忽视

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

启用模块

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

答案 17 :(得分:1)

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

请注意,如果{}未加载http://www.google-analytics.com/ga.js并且您使用onclick javascript函数来帮助跟踪网页元素的点击次数。

IE: 的onclick =“JavaScript的:pageTracker._trackPageview( '/由/上/文件夹/参考');

您将遇到JavaScript错误,这将导致jQuery或其他强大的JavaScript函数停止运行。

答案 18 :(得分: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 ?>

答案 19 :(得分:0)

今天,在与我自己的计算机不同的计算机上,我注意到默认情况下,针对Chrome的μBlockOrigin阻止了Google AdSense。经过一些谷歌搜索,我找到了这个article。它还注意到μBlockOutourceFirefox,用于Firefox的μAdblock和用于Windows的Ad Muncher默认阻止AdSense。大多数其他选项都可以配置为阻止AdSense。

这看起来很有用,因为我的IP通常是动态的,所以只要我登录Chrome,Chrome扩展程序就可以关注我。

答案 20 :(得分:0)

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

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

我最初是在一个名为Dahlia, which is a boutique maker of items for Greek Orthodox Weddings and Baptisms的网站上进行设置的。

代码如下:

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

<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的行。

然后,我在标题中使用以下代码创建了一个新的webpage called "do-not-track"

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

这是我完整的writeup for the Weebly site

希望这对某人有帮助!

答案 21 :(得分:0)

不幸的是,使用 App + Web Properties 类型的设置时,似乎无法从报告中排除localhost

仅显示仅用于Web的属性的过滤器。过滤器无法应用于App + Web属性。

对于nextjs Web应用程序,尤其是正在使用static generationSSR的Web应用程序,它将起作用:

在您的document.tsx

export default class MyDocument extends Document {
  render() {
    return (
      <Html lang="en">
        . . . . . 
        <body>
          <Main />
          <NextScript />
          {process.env.NODE_ENV === 'production' ? injectAnalytics() : ''}
        </body>
      </Html>
    );
  }
}

其中injectAnalytics是一个函数,可返回您的GA代码,例如:

function injectAnalytics(): React.ReactFragment {
  return <>
    {/* Global Site Tag (gtag.js) - Google Analytics */}
    <script
      async
      src={`https://www.googletagmanager.com/gtag/js?id=${GA_TRACKING_ID}`}
    />
    <script
      dangerouslySetInnerHTML={{
        __html: `
                    window.dataLayer = window.dataLayer || [];
                    function gtag(){dataLayer.push(arguments);}
                    window.gtag = gtag;
                    gtag('js', new Date());

                    gtag('config', '${GA_TRACKING_ID}', {
                      page_path: window.location.pathname,
                    });
                  `,
      }}
    />
  </>
}

答案 22 :(得分:0)

获取请求主机变量。

所以围绕像这样的分析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>