有没有方法可以阻止 Google Analytics 将开发工作视为点击?

我已经添加了我需要的 JavaScript 到我的页面底部,这样我就可以使用谷歌分析。唯一的问题是,我确信它把我所有的开发工作都算作点击。鉴于我可能一天要看上百次这样的内容,我的页面浏览次数会受到影响。是否有一种方法可以从特定的 IP 地址关闭它,还是应该将其构建到我的构建过程中,以便只有在我为部署而构建时才添加它?

64896 次浏览

是的,您进入分析设置,编辑您的网站,并 + 添加过滤器,以定义一个过滤器,排除您的 IP 地址。

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

如果你是 NAT 的后面,或者因为其他原因你不能把你的 IP 地址给 Google 分析,那么最简单的方法就是把 Google 分析域设置为 localhost (127.0.0.1) ,从现在开始当你打开你的浏览器,所有对 Google 分析的请求都会直接发送到你的工作站,而不用知道 Google 分析。

如果您没有使用静态 IP,那么在 GA 上设置 IP 过滤器对您没有帮助。

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

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

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

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

我用广告拦截器为火狐,它可以专门阻止谷歌分析跟踪脚本。由于火狐是我的主要开发浏览器,它工作得很好,直到我需要测试我的工作在其他浏览器。

获取请求主机变量。

因此,像下面这样在分析 javascript 周围包装一个 if 语句(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>

就像人们提到的那样,你可以在本地托管 google-analytics.com 域,也可以设置一个函数来查看自己是否在开发网络中工作。

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

Onclick = “ javascript: pageTracker._ trackPageview (’/made/up/file/reference’) ;

您将遇到一些 JavaScript 错误,这些错误将使 jQuery 或其他健壮的 JavaScript 函数无法正常运行。

我们设置了第二谷歌分析跟踪开发和 QA 工作代码-实际上很方便,当你想测试你的分析集成,也确保一个没有流血到生产统计。

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

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


//google analytics code goes here


}
</script>

有一些 Chrome 扩展可以做到这一点,比如 https://chrome.google.com/webstore/detail/fadgflmigmogfionelcpalhohefbnehm

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

作为一个额外的选择,我有一个开发服务器与许多不同的网站和开发人员。这意味着我对这三个主要选项不是特别满意

  • 主机文件-问题与许多开发人员和开放的人为错误
  • 每个网站上的 if/else 开发块
  • 配置在 GA 网站-一些客户有自己的 GA 帐户; 将必须在 每个网站上完成,有可能被遗忘/忽略

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

启动模块

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"

然后重启阿帕奇

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

现在是2014年,我仍然不满意所有现有的解决方案..。

  • IP 过滤器需要一个静态的 IP 地址。如果我在家工作或在咖啡店工作怎么办?
  • 检查主机名可以消除来自开发环境的命中,但是如果我正在调试活动站点呢?
  • 编辑服务器配置很烦人/高级,而且多个域很复杂。
  • 选择退出扩展程序可以阻止所有网站的点击,也可以根据你的要求不阻止。

所以,我创建了自己的浏览器扩展..。 Https://chrome.google.com/webstore/detail/lknhpplgahpbindnnocglcjonpahfikn

  • 无论我走到哪里,它都跟着我
  • 它可以在开发环境和活动/公共域上工作
  • 它只影响我和我正在开发的网站
  • 点击一下就可以打开/关闭
  • 很容易验证它是否真的没有向分析发送任何数据

它的工作原理是始终在您的计算机上设置一个“开发人员 cookie”,只针对您选择的域。然后,在向 Analytics 发送任何数据之前,只需在脚本中检查这个 cookie。您可以为扩展设置中的 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 集,那么你的访问将不会计入你在谷歌分析或其他任何你喜欢使用的分析工具的总数。

请随意分享我的解决方案,并使用我的扩展来保持这些 cookie 设置。

在运行 GoogleAnalytics 异步代码之前添加这一行,以禁止跟踪该 Web 属性 ID:

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

UA-XXXXXX-Y对应于您希望禁用跟踪的 Web 属性 ID。

发信人: https://developers.google.com/analytics/devguides/collection/gajs/

我有一个用于本地开发的 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 ?>

你可以用这个代码

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

解决方案是使用 谷歌标签管理器(GTM)来处理您的 Google 分析。这将允许您只在您的生产领域启动谷歌分析,而不必在您的网站的代码中编写任何条件。下面是如何做到这一点:

在 GTM 中,设置一个只在 PageHostname 包含您的生产域时触发的触发器。

enter image description here

然后为通用分析设置一个标签,并将其触发器设置为您刚才创建的那个。

enter image description here

今天,当我在一台和我的电脑不同的电脑上时,我注意到 Chrome 的 μBlock Origin 默认屏蔽了 Google AdSense。在谷歌了一下之后,我找到了这个 文章。它还注意到,默认情况下,火狐浏览器使用 μBlock Origin,火狐浏览器使用 μAdblock,Windows 浏览器使用 AdSense 浏览器使用 Ad Muncher。大多数其他选项都被列为可配置以阻止 AdSense。

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

使用 < a href = “ https://Support.google.com/analytics/answer/2709828? hl = en”rel = “ nofollow noReferrer”> 自定义度量 过滤所有这些流量。

在应用程序中初始化 GA 时,设置一个自定义标志来跟踪开发人员:

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

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

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

enter image description here

我知道这篇文章很老了,但是没有一个解决方案能满足我的需要。我不仅想从 GA (和 FB)中删除开发工作,而且我还想让公司内部的一些人不被算在 GA 和 FB 中。因此,我想要一个相对简单的方法,让那些人不用插件就能从分析中排除自己,或者排除域 IP (就像那些拿着笔记本电脑的人一样)。

我创建了一个 网页,用户可以去,并点击一个链接,以选择退出 GA 和 FB 跟踪。它为站点放置一个 cookie。然后我检查这个 cookie 来决定我们是否应该向 GA 和 FB 发送数据。

我最初在一个名为 大丽花,这是一个精品制造商的项目,为希腊东正教婚礼和洗礼的网站上设置了这个功能。

密码是这样的:

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

<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。这最初是为 Weeble (购物 CMS)网站编写的。所以如果你不在 Weeble 上,你可以删除提到 weeble 的那一行。

然后我创建了一个新的 一个叫“禁止追踪”的网页,标题中包含以下代码:

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

这是我完整的 为维布里网站撰写文章

希望这对谁有帮助!

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

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

要禁用本地主机命中,只需创建一个筛选器来排除本地主机。转到管理-> 属性-> 查看设置这样做。查看下面的截图以获得一些帮助。

ga view exclude localhost

如果你使用非静态 IP 访问,你可以使用像 开发者 Cookie这样的 Chrome 扩展来跳过运行 Google 分析代码。

我个人不这样做,因为我使用的广告屏蔽器已经阻止谷歌分析在我的浏览器。

不幸的是,当使用 App + Web 属性类型的设置时,似乎不可能将 localhost排除在报告之外:

只显示 Web 属性的过滤器。过滤器不能应用于 App + Web 属性。

对于 nextjs web 应用程序,尤其是那些使用 static generationSSR的应用程序来说,这样做是可行的:

在你的文件里

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,
});
`,
}}
/>
</>
}

对于 谷歌分析4(GA4),您可以创建一个规则来定义 IP 地址,其流量应标记为内部 IP 地址。

定义内部流量

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

enter image description here

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

enter image description here

GA4数据过滤器

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

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

更改为“ Active”以启用筛选器。

enter image description here

我正在使用这个代码来禁用 productionrails 6中的 google analytics

admin登录时,我设置 is_developer cookie 为 1 year禁用 google analytics

如果 admin注销,我不删除 is_developer cookie。因此,google analytics将在 admin注销后被禁用。

您可以在测试后注释所有的 console.log

<% if Rails.env.production? %>
<% ga_tracking_id = 'G-36......Y6' %>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= ga_tracking_id %>"></script>


<% if user_signed_in? && current_user.admin? %>
<script>
if(document.cookie.indexOf('is_developer') > -1) {
console.log('gtag:- is_developer cookie already set');
} else {
document.cookie = `is_developer=1; expires=${new Date(new Date().getTime()+1000*60*60*24*365).toGMTString()}; path=/`;
console.log('gtag:- is_developer cookie set for 1 year');
}
</script>
<% end %>


<script>
if(document.cookie.indexOf('is_developer') > -1) {
console.log('gtag:- disabled for developer');
} else {
console.log('gtag:- enabled');
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= ga_tracking_id %>');
}
</script>
<% end %>


如果你有任何建议,请在下面评论。