Google Analytics(分析)上是否有一项设置可禁止尚未同意的用户使用Cookie


171

根据欧盟《电子隐私指令》第5条第3款(又称“曲奇法”),针对欧盟用户的网站在设置Cookie之前必须先获得用户的选择加入同意。

请参阅ICO指南

我试图将其与我网站上的Google Analytics(分析)相吻合。

我可以想象Google Analytics(GA)可以在不使用Cookie的情况下进行一定程度的分析数据收集。

但是,我在此上(在Google网站/设置面板上)找不到任何有关如何在页面请求期间将有关“同意书”的信息转发给Google的信息。所以,我唯一的选择似乎是我不应该嵌入谷歌标记代码在所有,如果用户没有明确给出同意。这似乎有点太激烈了。

让我的服务器端脚本hasConsentedToCookies=FALSE在JavaScript标记中设置一个标志将使我可以指示Google的服务以正常降级的方式运行。

Google Analytics(分析)上是否有一项设置可禁止尚未同意的用户使用Cookie?

如果是这样,我在哪里可以找到有关此信息?


2
更新:这个问题曾经问过Adsense和Analytics(分析)这两个问题,但是由于每个问题的答案可能都不相同,因此我从该问题中提取了“ Google Adsense”方面,以使每个问题更具凝聚力。
JW。


以防万一您不知道这一点:您听说过piwik吗?(piwik.org
TheHippo's

好而有趣的问题!
罗布2012年

Google说您可以禁用cookie,但是它似乎不起作用,或者我做错了事。链接:developers.google.com/analytics/devguides/collection/...

Answers:


149

编辑(2019):以下答案早于GDPR,可能需要修改。

Google Analytics(分析)具有一组新的API,可帮助您选择停用Cookie。这是文档,这是他们的帮助文档

关于“欧盟Cookie规章”(在成员国中执行)是否要求被动式Web分析跟踪要求采用合规性的选择性机制一直存在一些歧义。如果您担心某种方式,请咨询律师。Google会授权您决定要如何进行。

他们会将实现细节留给您,但是,主意是,一旦确定是否要在Google Analytics(分析)中跟踪用户,如果答案是不跟踪,则应在Google之前将以下属性设置为true分析运行:

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

其中UA-XXXXXX-Y是您在Google Analytics(分析)中的帐户ID

正如其他张贴者所指出的那样,Google Analytics(分析)依赖于Cookie。因此,如果没有Cookie,您将无法进行任何形式的跟踪。如果您确定不为跟踪而添加Cookie,则需要实施以下操作:

if(doNotCookie()){
   window['ga-disable-UA-XXXXXX-Y'] = true;
}

选择参加

首次加载Google Analytics(分析)时确实需要一些柔术,因为需要运行Google Analytics(分析)之前设置此属性,以防止发生跟踪,这意味着对于“选择跟踪”方法, d可能需要实现一种机制,在首次访问时,如果没有选择加入cookie(明确允许使用cookie来确定cookie偏好设置的cookie),则Google Analytics(分析)会自动停用,然后,如果发生选择加入,则重新运行Google Analytics(分析)。在随后的综合浏览量中,所有操作都会顺利进行。

可能类似于(伪代码):

if( hasOptedOut() || hasNotExpressedCookiePreferenceYet() ){ //functions you've defined elsewhere
     window['ga-disable-UA-XXXXXX-Y'] = true;
}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXX-Y']);
  _gaq.push(['_trackPageview']);


  function onOptIn(){ //have this run when/if they opt-in.
      window['ga-disable-UA-XXXXXX-Y'] = false;
      //...snip...
      //set a cookie to express that the user has opted-in to tracking, for future pageviews
      _gaq.push(['_trackPageview']); // now run the pageview that you 'missed'
   }

选择退出

使用这种方法,您将允许用户选择退出跟踪,这意味着您将来将使用cookie来设置ga-disable-UA-XXXXXX-Y'属性,并使用cookie来管理该属性:

if( hasOptedOut() ){ // function you've defined elsewhere 
     window['ga-disable-UA-XXXXXX-Y'] = true;
}

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-Y']);
  _gaq.push(['_trackPageview']);

2
小巧的选择– if(doNotCookie(){应该是if(doNotCookie()){
Roee Shenberg,2012年

1
感谢你的回答。尽管我不会说“咨询律师”。对于技术人员来说,阅读和理解指南可能比让律师学习技术细节要快得多。
JW。

1
我是否了解,如果用户选择不存储cookie,解决方案是使用此首选项存储cookie?还是不认为该Cookie符合欧盟法规?
乔纳森·霍斯曼

5
是。我所见过的大多数法规(特别是英国和我相信法国的法规)都明确指出,存储其cookie偏好的cookie并不违反规则。由于cookie是在浏览器中存储状态的唯一通用方式,因此无法解决。
Yahel 2012年

17

通过{'storage' : 'none'}在创建跟踪器实例时指定选项,可以禁用对Google Analytics(分析)使用cookie 。

有关更多详细信息,请参见Google的主题指南


1
该指南说,如果禁用cookie,则必须自己实施类似的跟踪,因此这似乎无济于事。
mpartel '17

4
@mpartel您确实会丢失一些信息:返回访问者和多渠道转换。但是,如果您不需要这些,那仍然可以接受。
阿里

16

快速说明一下,英国广播公司(可能是英国最受欢迎的网站)采取了一种有趣的方式来遵守Cookie-他们向用户显示了一条横幅,告诉他们设置了Cookie并提供了两个链接。

这个解释什么是cookie。这一功能使他们可以管理Cookie,但最有趣的是,它们提供了指向Google Analytics(分析)链接,以允许用户完全选择不使用GA。因此,总而言之,英国广播公司(BBC)认为他们可以告诉用户设置了哪些Cookie,然后提供指向Google的链接,以允许用户选择退出所有GA Cookie。对我来说,这比您告诉GA通过JS选择退出地址的麻烦要少得多。


13
我真的不会认为BBC的解决方案是可以接受的。实际上,他们的解决方案从根本上来说是有缺陷的,至少出于以下三个原因:1)在询问您是否愿意接受它们之前设置cookie,2)必须设置cookie以保存您的cookie偏好,以及3)声明该网站将不会控制第三方Cookie,如果不是欧盟指令的字眼,这将直接违反其精神。我怀疑Beebs会为此而sm之以鼻,因为他们正试图以尽可能多的方式突破法律界限,而另辟otherwise径。
David T. Macknet,2012年


当然,也许我错了-显然他们已经改变了要求? blog.silktide.com/2012/05/…讨论了对要求的更改,因此我一无所知。只是不了解这些人,我现在住在这里!
David T. Macknet,2012年

注册者有一个标语,表示继续使用他们的网站即表示您同意您允许他们使用cookie以及接受按钮。
iamichi

6
@MartinClarke-嗯...实际上,我不确定我会跟随媒体公司的领导,尤其是因为我希望BBC在英国拥有特殊的地位,并且很可能会被告知要塑造而不是被罚款。我认为这更多是一个风险问题-英国广播公司(BBC)作为一家公共资助机构,风险不高,而商业网站则可能有。
David T. Macknet,2012年

15

我经常从不要求用户选择退出Google Analytics(分析),这是因为我从未设置过Cookie,也从未保存过其IP(以及其他个人数据)。

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-98765432-1', 'www.example.com', {
  'anonymizeIp': true
  , 'storage': 'none'
  , 'clientId': window.localStorage.getItem('ga_clientId')
});
ga(function(tracker) {
  window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
});
ga('send', 'pageview');

另请在将Google Analytics(分析)Cookie转换为本地/会话存储时查看此代码。

该脚本不会设置任何Cookie,但仍会通过Google Analytics(分析)进行跟踪。实际上,这将对隐私产生与使用cookie相同的效果,因为google仍记录用户的IP地址。

那就是anonymizeIp开关的所在。这告诉Google仅保存IP地址的匿名版本。匿名的IP地址不视为个人数据,因此将尊重用户的隐私。

AFAIK Cookie法律是关于隐私的,它确实允许网站跟踪其使用情况。我不是律师,也不是任何人,但我认为该脚本符合欧盟Cookie法。

查看此插件,看看它是否起作用:http : //plnkr.co/MwH6xwGK00u3CFOTzepK


您好,这并不总是一种安全的方法:是原因。
caesarsol 2015年

这就是该'anonymizeIp': true选项的目的,它将不存储ip地址。我喜欢对cookie使用localstorage的原因有两个,这些原因与cookie法无关。
Elmer 2015年

5
不,这根本不符合:-匿名化IP会产生误导,并且根据欧盟法律仍会保留太多信息-欧盟法律将LocalStorage视为“ Cookie”,因此这段代码为您提供了较少的通用信息,但仍然不符合与法律。
Flunch

“欧盟Cookie法”实际上是一项指令,因此取决于UE成员的特定法律。例如,意大利隐私权机构明确声明,根据意大利法律,如果您匿名使用IP地址并在Google Analytics(分析)控制台上禁止与其他服务共享数据,则无需用户同意。
mcont

4
@Flunch “ anonymizeIp具有误导性,但根据欧盟法律仍保留过多信息”,请提供参考。为什么不能接受,什么时候可以?什么是“信息过多”
阿里

3

您可以通过在Google Analytics(分析)代码的顶部添加以下代码来禁用Google Analytics(分析)Cookie(在行之前:var _gaq = _gaq || [];):

ga('create', 'UA-XXXXXX-XX', {'storage': 'none'});
ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

但是,此修改后,Google Analytics(分析)的某些功能(例如实时统计信息)无法正常运行。有关Google Analytics(分析)Cookie的更多信息:https : //developers.google.com/analytics/devguides/collection/analyticsjs/domains?hl=zh_CN#disableCookies


会是什么var clientId = ...代码呢?据我所知,它在函数内部定义了一个局部变量,不是没有用吗?
caesarsol 2015年

我想这只是一个例子,您应该clientId在函数内部使用它,因为它在stackoverflow.com/questions/4502128/…
caesarsol 2015年

1

到目前为止,处理此问题的常用方法是wolf-software的jquery插件所使用的方法,该方法可阻止脚本在用户选择加入之前运行。但是,ICO上周更新了其准则,但说依靠' BBC网站上使用的“暗示同意”。虽然我真的不认为这是法律的精神,但执法人员认为这是可以接受的。鉴于大多数欧盟国家尚未执行该指令,我想说他们很有可能会效仿英国的领导。

这里有一篇有关英国更新的有趣文章:

http://www.redant.com/articles/eu-cookie-law-update-ico-adopts-softly-softly-approach/


1

编辑:有与异步GA代码段一个谷歌Analytics(分析)设置此。

正如您所建议的,没有针对此的Google Analytics(分析)设置,如果您要使用Google Analytics(分析)Javascript跟踪脚本,则需要有条件地排除那些未同意的脚本。

已经有一些解决方案,而不是自己动手,可能会有所帮助。Javascript:http//cookies.dev.wolf-software.com/demo/index.htm

这是一个解决方案,允许通过执行跟踪服务器端来使用不带Cookie的Google Analytics(分析)基本功能,此示例在PHP中:http : //techpad.co.uk/content.php?sid=205


感谢您的链接。非常有用的链接。
JW。

1

对于不太麻烦的UX解决方案,您可以通过放置以下链接来设置对Google分析Cookie的默示同意:cookiestatement.eu(无JavaScript,无弹出窗口,无广告)


1

很抱歉回答迟到,但最近我一直在寻找相同的东西,直到我自己找到方法。这样做可能不是正确的方法,但它可以工作。(仅在有问题的网站上有效,不能完全选择不使用GA)。我已经测试了几天以确保。

我设法做到的方法是使用PHP Cookie。首先从添加analyticstracking.php包括开始...

<?php include_once('analyticstracking.php'); ?>

并在analyticstracking.php中添加以下内容...

<?php
if($_COOKIE['consent_cookie']=="Y"){
?>

<script type="text/javascript">
var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-********-*']);
  _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') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];      s.parentNode.insertBefore(ga, s);
  })();
</script>

<?php   
}
else{
//do nothing
}
?>

在用户同意使用Cookie之前,Google Analytics(分析)将无法正常工作,一旦保存,“ consent_cookie”将被保存并允许GA工作,但是如果“ google” cookie被销毁,它将阻止GA工作(显然)。

就像我说的那样,这也许不是正确的方法,但是我已经尝试并测试了,但确实如此。希望这对某人有帮助。


0

我面临着同样的问题。

最终,我在Elmer的答复中找到了一个解决方案,但在IP方面保持了安全,即不使用localStorage

// Create a fake ID instead of storing anything locally
function guidGenerator() {
    var S4 = function() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    };
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

...
ga('create', 'UA-XXXXXX-Y', {
        'storage': 'none',
        'clientId': guidGenerator()
});

(-)每个被访问的页面都将被视为Google Analytics(分析)的新访问者,因此我在那里失去了很多功能。

(+)但是我可以接受,并且我相信我在数据隐私立法方面是安全的。

任何反馈或改进建议都非常受欢迎。


-3

Google Analytics(分析)无法在没有Cookie的情况下运行,如果访问者之前曾访问过您的网站,则需要使用它来“标识”访问者。因此,在GA中没有为此设置的设置,如果GA无法创建Cookie,则GA不会记录访问者。

如果用户来自欧盟并且尚未选择加入,那么您应该排除我认为的google-analytics脚本。

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.