谷歌分析是否有设置来禁止尚未同意的用户使用 Cookie
Is there a setting on Google Analytics to suppress use of cookies for users who have not yet given consent
根据欧盟电子隐私指令(又名"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 追踪编码已注册。稍后,optIn
和 optOut
函数可以绑定到用户操作的接受/拒绝。
您可以在如何通过选择加入实施Google Analytics上阅读有关它的更多信息。
Legal Monster的东西 - 如果用户不同意分析cookie,则可以阻止cookie。
法律.js目前支持阻止(和启用(分析和营销cookie;将来将提供更多类别。
以下是有关阻止 cookie 的更详细指南。
GA 在没有 cookie 的情况下无法工作,如果访问者之前访问过您的网站,它需要它来"识别"访问者。因此,GA 中没有为此进行设置,如果 GA 无法创建 cookie,它就不会记录访问者。
如果用户来自欧盟并且没有选择加入,那么我认为您应该排除谷歌分析脚本。
- 将用户对样式表的选择保存在cookie中
- 支持cookie的用户可选CSS配色方案
- 在相对于用户当前 URL 路径的不同路径中设置 Cookie
- 让用户通过javascript访问cookie是一个安全问题
- Passport本地策略未将用户保存在cookie或会话中
- 向js fiddle添加cookie以保存用户键入的内容
- 在用户浏览表单时存储cookie
- 如果 cookie 为空 jquery,则设置和重定向用户
- 当错误时清除cookie 使用护照反序列化用户.js
- 仅为一个页面设置 Cookie,如果用户浏览其他页面,则不会发送回服务器
- 清除域上所有用户的具有设定值的单个 Cookie
- 谷歌分析是否有设置来禁止尚未同意的用户使用 Cookie
- Javascript cookie 用于保存用户首选项并使用共享首选项显示内容
- 记录整个网站的用户偏好的 Cookie 或会话变量
- Cookie 是否安全,无法在用户计算机上进行本地访问
- 从谷歌分析cookie获取当前用户/会话页面视图
- 通过小部件设置第三方cookie,这样我以后就可以识别用户了
- 跟踪器用户会话与Cookie,而不是像谷歌JS
- 如何在不使用cookie的情况下传递参数的同时将用户重定向到另一个页面
- 在网页中使用javascript中的cookie保存用户选择的背景图像