谷歌分析是否有设置来禁止尚未同意的用户使用 Cookie

Is there a setting on Google Analytics to suppress use of cookies for users who have not yet given consent

本文关键字:用户 Cookie 是否 设置 禁止 谷歌      更新时间:2023-09-26

根据欧盟电子隐私指令(又名"Cookie 法律"(第 5(3( 条,针对欧盟用户的网站在设置 Cookie 之前必须获得用户的同意。

查看ICO指南

我正在尝试在我的网站上与谷歌分析相提并论。

我想谷歌分析(GA(可以在不需要使用cookie的情况下进行一定程度的分析数据收集。

但是,我找不到任何关于如何在页面请求期间将有关"同意状态"的信息转发回Google的信息(在Google网站/设置面板上(。因此,我唯一的选择似乎是,如果用户没有明确同意,我根本不应该嵌入Google标签代码。这似乎有点激烈。

让我的服务器端脚本在 JavaScript 标签中设置一个hasConsentedToCookies=FALSE标志将允许我指示 Google 的服务以优雅降级的方式运行。

谷歌分析是否有禁止使用cookie的设置对于尚未同意的用户?

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

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

谷歌分析有一套新的API,以帮助遵守cookie选择退出。这是文档,这是他们的帮助文档。

关于欧盟 Cookie 法规(在成员国实施(是否要求被动网络分析跟踪需要选择加入机制以实现合规性,存在一些模棱两可之处。如果您担心这样或那样,请咨询律师。谷歌授权你决定如何继续。

他们会把实现细节留给你,但是,这个想法是,一旦你确定是否在Google Analytics中跟踪用户,如果答案是不跟踪,你需要在Google Analytics运行之前将以下属性设置为true:

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

其中UA-XXXXXX-Y是您在Google Analytics中的帐户ID

正如其他海报所指出的,谷歌分析依赖于cookie。因此,如果没有 cookie,您将无法进行任何类型的跟踪。如果您已确定不会对某人进行跟踪,则需要实现如下操作:

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

选择加入

当您首次加载Google Analytics时,

这确实需要一点柔术,因为需要在Google Analytics运行之前设置此属性以防止跟踪发生,这意味着,对于"选择加入跟踪"方法,您可能需要实现一种机制,在首次访问时,在没有选择加入cookie的情况下自动禁用Google Analytics(明确允许确定cookie首选项的cookie(, 然后,如果选择加入,则重新运行谷歌分析。在随后的网页浏览量中,一切都会顺利进行。

可能看起来像(伪代码(:

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']);

您可以通过在创建跟踪器实例时指定{'storage' : 'none'}选项来禁用谷歌分析的 Cookie。

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

作为快速说明,BBC(可能是英国最受欢迎的网站(采取了一种有趣的方法来遵守cookie - 他们向用户显示了一个横幅,告诉他们cookie已设置并提供几个链接。

这个解释了什么是饼干。这个允许他们管理他们的cookie,但最有趣的是,他们提供了一个指向Google Analytics的链接,以允许用户选择完全退出GA。因此,总而言之,BBC认为他们可以告诉用户设置了哪些cookie,然后提供指向Google的链接,以允许用户选择退出所有GA cookie。对我来说,这比你告诉 GA 通过 JS 选择退出地址要麻烦得多。

我经常从不要求用户选择退出谷歌分析,那是因为我从不设置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');

另请查看此代码 将谷歌分析 cookie 转换为本地/会话存储

此脚本不会设置任何 Cookie,但仍会通过谷歌分析进行跟踪。这实际上会对隐私产生与使用cookie相同的影响,因为谷歌仍然记录用户的IP地址。

这就是anonymizeIp开关的用武之地。这告诉谷歌只保存IP地址的匿名版本。匿名IP地址不被视为个人数据,因此用户隐私将得到尊重。

AFAIK cookie 法律完全与隐私有关,并且确实允许网站跟踪其使用情况。我不是律师或任何东西,但在我看来,这个脚本符合欧盟cookie法。

看看这个 plunk 看看它的实际效果:http://plnkr.co/MwH6xwGK00u3CFOTzepK

最新的Google Analytics(gtag.js(有一个"同意模式"(仍处于测试阶段(:

https://developers.google.com/gtagjs/devguide/consent

它看起来像这样:

gtag('consent', 'default', {
  analytics_storage: 'denied',
  ad_storage: 'denied'
});

然后,在用户同意的情况下,您可以稍后更新这些设置。

您可以通过在

谷歌分析代码顶部添加此代码来禁用谷歌分析 cookie(行前:var _gaq = _gaq ||[];):

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

但是,在此修改后,谷歌分析的某些功能(例如实时统计信息(无法正常工作。有关谷歌分析cookie的更多信息:https://developers.google.com/analytics/devguides/collection/analyticsjs/domains?hl=en#disableCookies

我遇到了同样的问题。

最终,我在埃尔默的回复中得到了一个解决方案,但在 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中的新访问者,因此我在那里失去了很多功能。

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

欢迎任何反馈或改进建议。

到目前为止,处理此问题的常用方法是wolf-software的jquery插件使用的方法,它阻止脚本运行,直到用户选择加入。然而,ICO上周更新了他们的指导方针,表示依赖BBC网站上使用的那种"默示同意"是可以接受的。虽然我真的不认为这符合法律的精神,但这是执法者认为可以接受的。鉴于欧盟大部分国家尚未实施该指令,我认为他们极有可能效仿英国。

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

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

编辑:异步GA代码段有一个Google 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

对于侵入性较小的用户体验解决方案,您可以通过放置以下链接来为谷歌分析cookie设置默示同意:cookiestatement.eu(没有javascript,没有弹出窗口,没有广告(

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

我设法做到这一点的方法是使用PHP cookie。首先从添加分析跟踪开始.php包括...

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

并在分析跟踪中.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 工作,但如果"谷歌"cookie 被销毁,它将阻止 GA 工作(显然(。

就像我说的,这可能不是正确的方法,但我已经尝试和测试过,确实如此。希望这对某人有所帮助。

2022 年更新:它不再与 Cookie 有关。现在,即使从欧盟以外加载谷歌字体,您也需要同意。这是因为这样做的用户IP(非常私密的信息哈哈(将被发送到美国。我不是律师,但这也会影响Adsense和分析。在这里,您将找到仅在征得同意的情况下加载Adsense和分析的解决方案:https://stackoverflow.com/questions/70967060/loading-google-adsense-analytics-and-youtube-only-when-consent-is-given

只需调用 setTimeout("analyticsladen((", 1(; 当同意时:

新的Google Analytics 4代码是:

 <script>
 window.dataLayer = window.dataLayer || [];
 function gtag(){dataLayer.push(arguments);}
 gtag('js', new Date());
 gtag('config', 'G-####');
 </script>

 <script type="text/javascript">
 function analyticsladen() {
 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.src = 'https://www.googletagmanager.com/gtag/js?id=G-####';
 document.body.appendChild(script);
 }
 //setTimeout("analyticsladen()", 1);
 </script>

或者您可以使用旧的Google通用分析代码。它只能工作到 2023 年 6 月(谷歌说(:

 <script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-####-#']);
 _gaq.push (['_gat._anonymizeIp']);
 _gaq.push(['_trackPageview']);
 var analyticsladen = 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>

趣事:谷歌将我的页面排名高出 4 步,我不再使用分析:D

使 GA 仅在用户接受 cookie 使用后才能正常工作,需要执行几个步骤。

禁用饼干

   <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-Y"></script>
-- <script>
-- window.dataLayer = window.dataLayer || [];
-- function gtag(){dataLayer.push(arguments);}
-- gtag('js', new Date());
-- gtag('config', 'UA-XXXXXX-Y');
-- </script>

在实现 GA 时,只需导入 gtag.js 脚本并删除 GA 初始化即可更新。

当用户接受 Cookie 时启用 GTag

GTag选择加入是一种工具,可在用户接受/拒绝cookie时启用和禁用GA。

<script src="https://www.npmcdn.com/gtag-opt-in@2.0.0/dist/index.js"></script>
<script>
  GTagOptIn.register('UA-XXXXXX-Y');
  ...
  // On user opt in
  GTagOptIn.optIn();
  // On user opt out
  GTagOptIn.optOut();
  ...
</script>

库已加载。GA 追踪编码已注册。稍后,optInoptOut 函数可以绑定到用户操作的接受/拒绝。

您可以在如何通过选择加入实施Google Analytics上阅读有关它的更多信息。

您可以使用类似

Legal Monster的东西 - 如果用户不同意分析cookie,则可以阻止cookie。

法律.js目前支持阻止(和启用(分析和营销cookie;将来将提供更多类别。

以下是有关阻止 cookie 的更详细指南。

GA 在没有 cookie 的情况下无法工作,如果访问者之前访问过您的网站,它需要它来"识别"访问者。因此,GA 中没有为此进行设置,如果 GA 无法创建 cookie,它就不会记录访问者。

如果用户来自欧盟并且没有选择加入,那么我认为您应该排除谷歌分析脚本。