Existe uma configuração no Google Analytics para suprimir o uso de cookies para usuários que ainda não deram consentimento

171

De acordo com o Artigo 5 (3) da UE da Diretiva Privacidade Eletrônica (também conhecida como 'Leis sobre Cookies'), os sites que têm como alvo os usuários da UE precisam obter o consentimento dos usuários antes de definirem um cookie.

Consulte as orientações da OIC

Estou tentando combinar isso com o Google Analytics no meu site.

Imagino que o Google Analytics (GA) possa realizar um certo nível de coleta de dados analíticos sem exigir o uso de cookies.

No entanto, não consigo encontrar nenhuma informação sobre isso (nos painéis de sites / configurações do Google) sobre como retransmitir informações sobre o 'estado de consentimento' para o Google durante uma solicitação de página. Então, a minha única opção parece ser que eu não deveria incorporar código de tag do Google em tudo , se o usuário não tiver dado explicitamente o seu consentimento. O que parece um pouco drástico.

Deixar meu script do lado do servidor definir um hasConsentedToCookies=FALSEsinalizador nas tags JavaScript me permitiria instruir os serviços do Google a serem executados de uma maneira graciosamente degradada.

Existe uma configuração no Google Analytics para suprimir o uso de cookies para usuários que ainda não deram consentimento?

Em caso afirmativo, onde posso encontrar informações sobre isso?

JW.
fonte
2
Atualização: essa pergunta costumava ser feita sobre o Adsense e o Analytics, mas como a resposta para cada uma pode ser diferente, extraí o aspecto 'Google Adsense' desta pergunta para permitir que cada uma seja mais coesa.
JW.
Alguma discussão interessante em news.ycombinator.com/item?id=4032633
Eduardo
Apenas no caso de você não saber disso: Você já ouviu falar sobre piwik? ( piwik.org )
TheHippo
Boa e interessante pergunta!
29412 Rob
O Google diz que você pode desativar os cookies, mas isso não parece funcionar ou estou fazendo algo errado. Link: developers.google.com/analytics/devguides/collection/…

Respostas:

149

EDIT (2019): A resposta abaixo é anterior ao GDPR e provavelmente requer revisão.

O Google Analytics possui um novo conjunto de APIs para ajudar na conformidade com a exclusão de cookies. Aqui está a documentação , e aqui estão os documentos de ajuda .

Houve alguma ambiguidade quanto ao fato de os Regulamentos sobre Cookies da UE (conforme implementados nos países membros) exigirem que o rastreamento de análise da web passiva exija mecanismos de aceitação para conformidade. Se você estiver preocupado de uma maneira ou de outra, consulte um advogado. O Google está capacitando você a tomar a decisão de como deseja prosseguir.

Eles deixarão os detalhes da implementação para você, mas a idéia é que, depois de determinar se o usuário deve ou não rastrear o usuário no Google Analytics, se a resposta for não acompanhar, você definiria a seguinte propriedade como true antes do Google O Analytics é executado:

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

Onde UA-XXXXXX-Y é o ID da sua conta no Google Analytics

Como os outros pôsteres observaram, o Google Analytics conta com cookies. Portanto, você não pode fazer nenhum tipo de rastreamento sem cookies. Se você determinou que alguém não deve ser preparado para rastreamento, precisará implementar algo como isto:

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

Optar por participar

Isso requer um pouco de jujitsu para quando você carrega o Google Analytics pela primeira vez, já que essa propriedade precisa ser definida antes da execução do Google Analytics para impedir que o rastreamento aconteça, o que significa que, para uma abordagem "ativar o rastreamento", você ' d provavelmente precisará implementar um mecanismo em que, na primeira visita, o Google Analytics seja automaticamente desativado na ausência de um cookie de aceitação (os cookies que determinam que as preferências de cookie são explicitamente permitidas) e, em seguida, se ocorrer uma aceitação, executa o Google Analytics. Nas exibições de página subsequentes, tudo funcionaria sem problemas.

Pode parecer algo como (pseudo-código):

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'
   }

Excluir

Com essa abordagem, você permitiria ao usuário desativar o rastreamento, o que significa que você usaria um cookie para definir a ga-disable-UA-XXXXXX-Y'propriedade e um cookie para gerenciá-la no futuro:

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']);
Yahel
fonte
2
Minúsculo nitpick em uma boa resposta - if (doNotCookie () {deve ser if (doNotCookie ()) {#
Roee Shenberg
1
Obrigado pela resposta. Embora eu não diria 'consultar um advogado'. Provavelmente é mais rápido para um técnico ler e entender as orientações do que seria necessário um advogado para aprender as nuances dos detalhes técnicos.
JW.
1
Devo entender que, se o usuário optar por NÃO armazenar cookies, a solução é armazenar um cookie com essa preferência? Ou este cookie não é considerado abrangido pelo regulamento da UE?
precisa
5
Sim. A maioria dos regulamentos que vi (especificamente os britânicos e acredito que os franceses) dizem explicitamente que um cookie que armazena sua preferência de cookie não é uma violação das regras. Como os cookies são a única maneira universalmente acessível de armazenar estado no navegador, não há meio de contornar isso.
Yahel
17

Você pode desativar o uso de cookies para o Google Analytics, especificando a {'storage' : 'none'}opção ao criar a instância do rastreador.

Consulte o guia do Google sobre o assunto para mais detalhes.

severin
fonte
1
O guia diz que se você desativar os cookies, precisará implementar um rastreamento semelhante, para que isso não pareça ajudar.
Mpartel
4
@mpartel Você perde algumas informações: visitantes recorrentes e conversões multicanal. Mas se você não precisar deles, isso ainda é aceitável.
Ali
16

Como uma observação rápida, a BBC (provavelmente o site mais popular do Reino Unido) adotou uma abordagem interessante para obedecer aos cookies - eles exibiram um banner para os usuários informando que os cookies estão definidos e fornecem alguns links.

Este explica o que são cookies. Essa permite que eles gerenciem seus cookies , mas o mais interessante é que eles fornecem um link para o Google Analytics para permitir que os usuários optem pela exclusão do GA na sua totalidade. Portanto, em resumo, a BBC considerou que pode informar ao usuário quais cookies estão configurados e, em seguida, fornecer um link para o Google para permitir que o usuário desative todos os cookies do GA. Para mim, isso é muito menos complicado do que você dizer ao GA para optar por não receber um endereço por meio do JS.

Martin Clarke
fonte
13
Eu realmente não assumiria que a solução da BBC é aceitável. De fato, a solução deles é fundamentalmente falha, por pelo menos três razões: 1) define cookies antes de perguntar se você deseja aceitá-los, 2) deve definir um cookie para salvar suas preferências e 3) afirma que o site não controlará os cookies de terceiros, o que viola diretamente o espírito, se não a letra da diretiva da UE. Suspeito que os Beebs sejam atingidos por este, pois estão tentando forçar os limites da lei da maneira mais possível, enquanto aparecem de outra maneira.
David T. Macknet 28/05
Dê uma olhada em blogs.wsj.com/tech-europe/2012/05/25/… para uma boa discussão.
David T. Macknet
Claro, talvez eu esteja errado - aparentemente eles mudaram os requisitos? blog.silktide.com/2012/05/… fala sobre uma alteração nos requisitos, por isso não sei mais. Só não sei sobre essas pessoas, e eu moro aqui (por enquanto)!
David T. Macknet
O Registro tem um banner que diz que, continuando a usar o site, eles assumem que você concorda em permitir que eles usem cookies e também um botão de aceitação.
Iamichi
6
@MartinClarke - Bem ... na verdade, não tenho tanta certeza de seguir a liderança de uma empresa de mídia, em particular porque esperaria que a BBC ocupasse uma posição especial no Reino Unido e provavelmente seria instruída a moldar para cima, ao invés de levar um tapa com uma multa. Eu acho que é mais uma questão de risco - a BBC não tem muito risco, como um órgão público, enquanto um site comercial pode ter.
David T. Macknet
15

Muitas vezes, nunca peço aos usuários que optem pelo Google Analytics, porque nunca defino cookies e nunca salvo o IP (e outros dados pessoais).

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

Verifique também este código em Converter cookies do Google Analytics em armazenamento local / de sessão

Este script não definirá nenhum cookie, mas ainda será rastreado pelo Google Analytics. Na verdade, isso terá o mesmo efeito na privacidade do uso de cookies, porque o Google ainda registra o endereço IP do usuário.

É aí que entra a opção anonymizeIp. Isso diz ao Google para salvar apenas uma versão anônima do endereço IP. Um endereço IP anônimo não é considerado dados pessoais, portanto a privacidade dos usuários será respeitada.

A lei de cookies da AFAIK tem tudo a ver com privacidade e permite que o site rastreie seu uso. Não sou advogado nem nada, mas, na minha opinião, esse script está em conformidade com a lei de cookies da UE.

Confira este plunk para vê-lo em ação: http://plnkr.co/MwH6xwGK00u3CFOTzepK

Elmer
fonte
Olá, essa nem sempre é uma abordagem segura: eis as razões.
caesarsol
É para isso que serve a 'anonymizeIp': trueopção, isso não armazenará um endereço IP. Eu gosto de usar o armazenamento local sobre cookies por alguns motivos que não têm nada a ver com a lei de cookies.
Elmer
5
Não, isso não cumpre: - anonymizeIp é enganoso e ainda mantém muitas informações de acordo com as leis da UE - LocalStorage é considerado "cookie" pelas leis da UE. Portanto, este código fornece menos informações no GA e ainda não está em conformidade com a lei.
Flunch 24/03
A "lei de cookies da UE" é realmente uma diretiva, portanto depende das leis específicas dos membros da UE. Por exemplo, a autoridade de privacidade italiana declarou explicitamente que, para a lei italiana, o consentimento do usuário não é necessário se você anonimizar o endereço IP e desativar o compartilhamento de dados com outros serviços no console do Google Analytics.
Mcont 27/04
4
@Flunch "anonymizeIp é enganoso e ainda mantém muitas informações de acordo com as leis da UE" Forneça referências. Por que não é aceitável e quando seria bom? O que é "muita informação" ?
Ali
3

Você pode desativar os cookies do Google Analytics Analytics adicionando esse código na parte superior do código do Google Analytics (antes da linha: var _gaq = _gaq || [];):

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

No entanto, alguns recursos do Google Analytics (por exemplo, estatísticas em tempo real) não funcionam corretamente após essa modificação. Mais sobre os cookies do Google Analytics: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains?hl=pt_PT#disableCookies

noname
fonte
o que o var clientId = ...código faria? Tanto quanto sei, define uma variável local dentro da função, não é inútil?
precisa saber é o seguinte
Eu acho que é apenas um exemplo, você deve usar clientIddentro da função, uma vez que é feito em stackoverflow.com/questions/4502128/...
caesarsol
1

A maneira mais comum de lidar com isso até agora é o método usado pelo plug-in jquery da wolf-software, pelo qual impede a execução do script até que o usuário opte. A OIC atualizou suas diretrizes na semana passada, no entanto, para dizer que é aceitável confiar em ' consentimento implícito 'do tipo usado no site da BBC. Embora eu realmente não ache que esteja dentro do espírito da lei, é o que é considerado aceitável por quem a aplica. Dado que a maioria da UE ainda não implementou a diretiva, eu diria que é altamente provável que eles sigam a liderança do Reino Unido.

Há um artigo interessante sobre as atualizações do Reino Unido aqui:

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

Chris Disley
fonte
1

EDIT: Não é uma configuração do Google Analytics para este com o fragmento assíncrono GA.

Não há uma configuração do Google Analytics para isso, como você sugere, seria necessário excluir condicionalmente o script daqueles que não consentiram, se você quiser usar o script de rastreamento Javascript do Google Analytics.

Já existem algumas soluções que podem ser úteis em vez de criar as suas próprias. Javascript: http://cookies.dev.wolf-software.com/demo/index.htm

Aqui está uma solução que permite o uso dos recursos básicos do Google Analytics sem cookies, seguindo o servidor, este exemplo está em PHP: http://techpad.co.uk/content.php?sid=205

Alex Taylor
fonte
Obrigado pelos links. links muito úteis.
JW.
1

Para uma solução UX menos intrusiva, você pode definir o consentimento implícito para os cookies analíticos do google colocando um link para: cookiestatement.eu (sem javascript, pop-ups, sem anúncios)

Matt Clegg
fonte
1

Desculpe pelo atraso na resposta, mas estava procurando a mesma coisa recentemente, até descobrir uma maneira. Pode não ser o caminho certo para fazê-lo, mas funciona. (apenas funciona no site em questão não desativa o GA completamente). Eu testei por alguns dias para ter certeza.

A maneira como consegui fazer isso é usando um cookie PHP. Primeiro comece adicionando o analyticstracking.php include ...

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

e no analyticstracking.php adicione o seguinte ...

<?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
}
?>

Antes que o usuário tenha consentido com os cookies, o Google Analytics não funcionará e, assim que tiverem, o 'consent_cookie' será salvo e permitirá que o GA funcione, mas se o cookie do 'google' for destruído, o GA impedirá o funcionamento (obviamente).

Como eu disse, pode não ser o caminho certo, mas tentei e testei. Espero que isso ajude alguém.

Pezmo
fonte
0

Eu estava enfrentando o mesmo problema.

Eventualmente, eu tenho uma solução na linha da resposta de Elmer, mas jogando com segurança em relação aos IPs, ou seja, sem usarlocalStorage

// 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()
});

(-) Todas as páginas visitadas contarão como um novo visitante no Google Analytics, por isso estou perdendo muitas funcionalidades por lá.

(+) Mas posso viver com isso e acredito que estou seguro quanto às legislações de privacidade de dados.

Qualquer comentário ou sugestão de melhoria é mais que bem-vindo.

J0ANMM
fonte
-3

O GA não funciona sem cookies, ele precisa 'identificar' o visitante se ele já visitou seu site antes. Portanto, não há nenhuma configuração no GA para isso, o GA simplesmente não registra o visitante se ele não puder criar um cookie.

Se o usuário for da UE e não tiver optado por participar, você deve excluir o script de análise do google, eu acho.

Scriptor
fonte