Javascript Google Analytics是否设置了禁止未经同意的用户使用Cookie的功能
根据欧盟电子隐私指令(又称“Cookie法”)第5(3)条,针对欧盟用户的网站在设置Cookie之前必须获得用户的选择加入同意 看 我正试图在我的网站上与谷歌分析进行对比 我可以想象Google Analytics(GA)可以在不需要使用cookies的情况下进行一定程度的分析数据收集 但是,我在谷歌网站/设置面板上找不到关于如何在页面请求期间将“同意状态”信息转发回谷歌的任何信息。因此,我唯一的选择似乎是,如果用户没有明确同意,我根本不应该嵌入谷歌标签代码。这似乎有点过激 让我的服务器端脚本在JavaScript标记中设置一个Javascript Google Analytics是否设置了禁止未经同意的用户使用Cookie的功能,javascript,cookies,google-analytics,Javascript,Cookies,Google Analytics,根据欧盟电子隐私指令(又称“Cookie法”)第5(3)条,针对欧盟用户的网站在设置Cookie之前必须获得用户的选择加入同意 看 我正试图在我的网站上与谷歌分析进行对比 我可以想象Google Analytics(GA)可以在不需要使用cookies的情况下进行一定程度的分析数据收集 但是,我在谷歌网站/设置面板上找不到关于如何在页面请求期间将“同意状态”信息转发回谷歌的任何信息。因此,我唯一的选择似乎是,如果用户没有明确同意,我根本不应该嵌入谷歌标签代码。这似乎有点过激 让我的服务器端脚本在
hasApprovedToCookies=FALSE
标志将允许我指示Google的服务以优雅的降级方式运行
Google Analytics上是否有禁止使用cookies的设置
对于尚未给予同意的用户
如果是这样的话,我在哪里可以找到这方面的信息?GA在没有cookies的情况下无法工作,如果访问者以前访问过您的网站,它需要它来“识别”访问者。因此,GA中没有对此进行设置,GA只是在无法创建cookie时不会记录访问者 如果用户来自欧盟并且没有选择加入,那么我认为您应该排除google analytics脚本。编辑:有一个google analytics设置用于异步GA代码段。 没有Google Analytics设置,正如您所建议的,如果您想使用Google Analytics Javascript跟踪脚本,您需要有条件地排除那些未同意的脚本 已经有一些解决方案可以帮助您,而不是自己滚动。 Javascript: 这里有一个解决方案,允许在不使用cookies的情况下使用Google Analytics的基本功能,通过跟踪服务器端,这个例子是PHP:EDIT(2019):下面的答案早于GDPR,可能需要修改。 Google Analytics有一套新的API来帮助遵守cookie选择退出,这是他们的 关于欧盟Cookie法规(在成员国实施)是否要求被动网络分析跟踪需要选择加入机制来遵守,存在一些模糊性。如果你有这样或那样的担心,咨询律师。谷歌授权你决定如何继续 他们会将实施细节留给您,但是,我们的想法是,一旦您确定是否在Google Analytics中跟踪用户,如果答案是“不跟踪”,则在Google Analytics运行之前,您应该将以下属性设置为true:
window['ga-disable-UA-XXXXXX-Y'] = true;
其中UA-XXXXXX-Y是您在Google Analytics中的帐户ID
正如其他海报所指出的,谷歌分析依赖于cookies。因此,如果没有cookies,您将无法进行任何类型的跟踪。如果您已经确定某人不会被烹调用于跟踪,您将需要实现如下内容:
if(doNotCookie()){
window['ga-disable-UA-XXXXXX-Y'] = true;
}
gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied'
});
选择加入
当您首次加载Google Analytics时,这确实需要一点柔术,因为需要在Google Analytics运行之前设置此属性,以防止跟踪发生,这意味着,对于“选择加入跟踪”方法,您可能需要实现一种机制,在第一次访问时,如果没有选择加入cookie(明确允许确定cookie首选项的cookie),Google Analytics将自动禁用,然后,如果选择加入,将重新运行Google Analytics。在随后的页面浏览中,所有操作都将顺利进行
可能看起来像(伪代码):
选择退出
使用这种方法,您将允许用户选择退出跟踪,这意味着您将使用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']);
简而言之,英国广播公司(可能是英国最受欢迎的网站)采取了一种有趣的方法来遵守cookies——他们向用户展示了一条横幅,告诉他们cookies已设置,并提供了几个链接
这一个让,但最有趣的是,他们提供了一个完整的。总之,BBC认为他们可以告诉用户设置了哪些cookie,然后提供一个到谷歌的链接,允许用户选择退出所有GA cookie。对我来说,这比你告诉GA通过JS选择退出地址要简单得多。到目前为止,处理这个问题的常用方法是wolf软件的jquery插件使用的方法,它阻止脚本运行,直到用户选择加入。然而,ICO上周更新了他们的指导方针,说依靠BBC网站上使用的那种“默示同意”是可以接受的。虽然我真的认为这不符合法律精神,但执法者认为这是可以接受的。鉴于欧盟大部分国家尚未实施该指令,我认为他们很可能会效仿英国的做法 这里有一篇关于英国更新的有趣文章:
对于一个侵入性较低的用户体验解决方案,您可以通过放置一个链接来设置谷歌分析cookie的默示同意:cookiestatement.eu(无javascript、无弹出窗口、无广告)很抱歉回答晚,但我最近一直在寻找同样的东西,直到我自己找到了一种方法。这可能不是正确的方法,但它是有效的。(仅涉及现场的工程不会完全退出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
}
?>
var _gaq=_gaq | |[];
_推
ga('create', 'UA-XXXXXX-XX', {'storage': 'none'});
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
(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');
// 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()
});
<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>
<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>
gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied'
});