191

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

请参阅ICO 指南

我正试图在我的网站上使用Google Analytics来解决这个问题。

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

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

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

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

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

4

15 回答 15

159

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

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

关于欧盟 Cookie 法规(在成员国实施)是否要求被动网络分析跟踪需要选择加入机制以确保合规性,存在一些歧义。如果您担心某种方式,请咨询律师。谷歌授权您决定如何进行。

他们会将实施细节留给您,但是,想法是,一旦您确定是否在 Google Analytics 中跟踪用户,如果答案是不跟踪,您可以在 Google 之前将以下属性设置为 true分析运行:

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

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

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

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

选择参加

当您第一次加载 Google Analytics 时,这确实需要一点柔术,因为需要在 Google Analytics 运行之前设置此属性以防止跟踪发生,这意味着,对于“选择跟踪”方法,您d 可能需要实施一种机制,在第一次访问时,如果没有选择加入 cookie(明确允许确定 cookie 偏好的 cookie),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']);
于 2012-05-23T13:41:49.057 回答
26

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

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

于 2015-07-22T08:24:17.373 回答
18

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

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

于 2012-05-28T10:08:29.317 回答
18

我经常从不要求用户选择退出谷歌分析,那是因为我从不设置 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,但仍会通过谷歌分析进行跟踪。这实际上对隐私的影响与使用 cookie 相同,因为谷歌仍然记录用户的 IP 地址。

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

AFAIK cookie 法律完全是关于隐私的,并且确实允许网站跟踪其使用情况。我不是律师或其他任何人,但我认为此脚本符合欧盟 cookie 法。

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

于 2013-11-15T07:22:29.513 回答
7

最新的谷歌分析(gtag.js)有一个“同意模式”,只是为了这个(仍处于测试阶段):

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

它看起来像这样:

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

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

于 2020-12-30T17:01:26.480 回答
3

您可以通过在谷歌分析代码顶部添加此代码来禁用谷歌分析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

于 2013-06-21T17:32:59.820 回答
2

我面临着同样的问题。

最终,我在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 中的新访问者,因此我在那里失去了很多功能。

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

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

于 2020-06-04T20:20:35.890 回答
1

编辑:有一个谷歌分析设置与异步 GA 片段。

正如您所建议的那样,没有针对此的 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

于 2012-05-20T05:29:51.160 回答
1

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

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

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

于 2012-05-29T18:52:49.913 回答
1

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

于 2012-07-03T12:19:15.873 回答
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 工作(显然)。

就像我说的那样,这可能不是正确的方法,但我已经尝试过并且确实如此。希望这可以帮助某人。

于 2013-02-04T23:50:55.473 回答
0

只有在用户接受 cookie 使用后才能使 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 Opt In 是一种在用户接受/拒绝 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 跟踪 ID 已注册。稍后optInandoptOut函数可以绑定到用户操作的接受/拒绝。

您可以阅读有关如何使用 Opt In 实施 Google Analytics的更多信息。

于 2020-09-29T09:33:25.030 回答
0

如果用户不同意分析 cookie,您可以使用Legal Monster 之类的东西来阻止 cookie。

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

这是有关阻止 cookie 的更详细指南

于 2020-10-23T11:06:40.377 回答
0

2022 年更新:不再是关于 Cookie。现在,即使从欧盟以外加载谷歌字体,您也需要获得同意。这是因为这样做会将用户 IP(非常私密的信息哈哈)发送到美国。我不是律师,但这也会影响 Adsense 和 Analytics。在这里,您将找到一个解决方案,如何仅在获得同意的情况下加载 Adsense 和 Analytics:仅在获得同意的情况下加载 Google Adsense、Analytics 和 Youtube

于 2022-02-03T14:50:59.540 回答
-4

GA 在没有 cookie 的情况下无法工作,如果他/她之前访问过您的网站,它需要它来“识别”访问者。所以在 GA 中没有对此进行设置,如果 GA 无法创建 cookie,则不会记录访问者。

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

于 2012-05-19T22:34:37.080 回答