Idioma
Português
Categoria
Pesquisar

uabiConsent v1.1: Gestão de Cookies Integrado com Analytics e Adsense

JavaScript simples e gratuito para gerenciar cookies em conformidade com GDRP, LGPD e outras. Suporte multilíngue, banner personalizável, consentimento explícito e implícito usando sinais

Índice

uabiConsent v1.1: Gestão de Cookies Integrado com Analytics e Adsense
Em JavaScript Por Rudi Drusian Lange
Publicado em
Última atualização

Introdução

Nos últimos anos, a evolução das normas internacionais de proteção à privacidade, como o GDPR e a LGPD, reforçou a necessidade de empresas e desenvolvedores adotarem práticas que garantam transparência, consentimento explícito e respeito aos direitos dos usuários.

Estar em conformidade com essas regulamentações não é apenas uma obrigação legal, mas também um diferencial competitivo que fortalece a confiança do público.

Ferramentas que auxiliam na gestão de consentimentos de cookies para garantir conformidade legal tornaram-se indispensáveis. Foi nesse cenário que surgiu o uabiConsent, uma solução de código aberto e totalmente gratuita.

Desenvolvido em JavaScript puro, a solução dispensa o uso de bibliotecas adicionais, garantindo leveza e simplicidade na implementação, ao mesmo tempo que oferece alta customização e suporte a múltiplos idiomas.

Download

Para baixar o uabiConsent, clique no botão Download ou acesse o repositório diretamente no GitHub:

Carregando

Inclua o CSS e o JavaScript no seu site adicionando o seguinte código ao HTML:

HTML

<link rel='stylesheet' href='/caminho/para/css/uabi-consent-1.1.min.css'>
<script src='/caminho/para/js/uabi-consent-1.1.min.js'></script>

A melhor localização para a chamada do CSS é dentro da tag <head> do HTML, enquanto a chamada do JavaScript deve ser inserida logo antes do fechamento da tag </body>

Traduções

O arquivo de tradução uabi-consent-1.1.lang.json deve ser copiado para o mesmo diretório do arquivo JavaScript principal. Esse arquivo contém traduções disponíveis em Português, Inglês e Espanhol.

Caso necessário, as traduções podem ser alteradas diretamente no arquivo JSON. Também é possível adicionar suporte para novos idiomas seguindo o padrão estrutural já disponibilizado.

Inicialização

Após o carregamento do JavaScript principal, insira o código abaixo para inicializar o uabiConsent:

JavaScript

myUabiConsent = new uabiConsent({
   name: 'uabiConsent-',
   lang: 'pt',
   initialConsent: 'denied',
   expire: 365,
   privacyPolicyUrl: 'https://telazul.drusian.com.br/pt/artigo/politica-de-privacidade',
   showDecline: true,
   showSettings: true,
   consoleLog: true
});

Explicando:

  • name: O valor configurado nesta opção será usado como prefixo para os nomes dos diferentes tipos de cookies (saiba mais sobre os tipos na próxima seção). Por exemplo, usando a configuração acima, o cookie relacionado ao desempenho será armazenado com o nome uabiConsent-performanceCookies. Altere conforme sua preferência ou utilize o valor padrão.
  • lang: Define o idioma da interface. Idiomas suportados: 'pt' (Português), 'en' (Inglês) e  'es' (Espanhol).
  • initialConsent: Define o consentimento inicial antes que o usuário faça uma escolha:
    • 'granted': Cookies serão armazenados sem o consentimento explícito do usuário.
    • 'denied': Cookies só serão armazenados após o usuário consentir explicitamente.
  • expire: Tempo de expiração dos cookies em dias.
  • privacyPolicyUrl: URL para a política de privacidade do site. Esta opção é obrigatória para o funcionamento do script. Consulte o endereço fornecido no exemplo para referência.
  • showDecline: Exibe true ou oculta false o botão para recusar todos os cookies.
  • showSettings: Exibe true ou oculta false o botão para personalizar os tipos de cookies individualmente.
  • consoleLog: Exibe no console do navegador o valor definido para cada tipo de cookie. Esta opção é útil para testes e depuração, mas recomenda-se desabilitá-la no ambiente de produção.

O exemplo acima configura a caixa de diálogo em português, exibindo todos os botões (Aceitar, Recusar e Personalizar). O script considera que, inicialmente, o usuário não concedeu consentimento, garantindo que nenhum cookie além dos estritamente necessários seja armazenado até que o usuário faça uma escolha explícita.

Tipos de Cookies

O uabiConsent oferece quatro tipos de cookies personalizáveis para atender às necessidades do site e garantir conformidade com as regulamentações de privacidade. Abaixo estão os detalhes de cada tipo:

  1. Cookies Estritamente Necessários:
    • São essenciais para o funcionamento básico do site e não podem ser desativados.
    • Geralmente são criados em resposta a ações do usuário, como definir preferências de privacidade, fazer login ou preencher formulários.
    • Não armazenam informações pessoais identificáveis.
  2. Cookies de desempenho
    • Usados para medir e melhorar a experiência do usuário e a performance do site.
    • Responsáveis por coletar dados sobre o número de visitas, fontes de tráfego e como os visitantes interagem com o site (por exemplo, páginas mais visitadas).
    • Ferramentas como o Google Analytics se enquadram nessa categoria.
    • Todas as informações que estes cookies recolhem são agregadas e, portanto, anônimas. 
  3. Cookies funcionais
    • Proporcionam funcionalidades aprimoradas e personalizações no site.
    • Podem ser definidos pelo próprio site ou por terceiros.
    • Exemplos incluem a capacidade de lembrar preferências do usuário, como tema, idioma ou região.
  4. Cookies de direcionamento
    • Usados para tornar os anúncios publicitários mais relevantes ao perfil de interesses do usuário.
    • Podem ser definidos pelo site ou por terceiros, como o Google Adsense.
    • Quando aceitos, permitem a exibição de anúncios personalizados com base nas preferências do usuário.
    • Quando recusados, os anúncios serão exibidos sem personalização.

Referência

Este sistema de classificação de cookies e os textos utilizados tanto nesta página quanto no script foram inspirados no sistema de gerenciamento de cookies disponível no site Stack Overflow.

Observação Importante

Quando o script é configurado para considerar o consentimento inicial como 'denied' (negado), o comportamento das ferramentas integradas segue as seguintes regras:

  • O Google Analytics será carregado com sinais para não armazenar cookies.
  • O Google Adsense exibirá anúncios sem personalizações baseadas nas preferências do usuário.

Ao aceitar ou recusar os cookies clicando nos botões correspondentes, os sinais adequados serão enviados automaticamente para que tanto o Analytics quanto o Adsense ajustem suas operações de acordo com as preferências do usuário.

Alterar o Consentimento

Após o usuário aceitar, recusar ou personalizar as preferências de cookies, a caixa de diálogo será fechada. Para permitir que o usuário reabra a caixa de diálogo e altere suas configurações posteriormente, basta criar um link com a classe 'uabi-consent-show-dialog'.

Veja o exemplo abaixo:

Cookies

HTML

<a href='#' class='uabi-consent-show-dialog'>Cookies</a>

Ao clicar no link acima, a caixa de diálogo de consentimento será exibida novamente, permitindo que o usuário ajuste suas preferências de cookies.

Como integrar com Google Analytics e Adsense

Abaixo está um exemplo de como configurar o Google Analytics e o Google Adsense para serem carregados automaticamente pelo uabiConsent:

JavaScript

myUabiConsent = new uabiConsent({
   name: 'uabiConsent-',
   lang: 'pt',
   initialConsent: 'denied',
   expire: 365,
   privacyPolicyUrl: 'https://telazul.drusian.com.br/pt/artigo/politica-de-privacidade',
   showDecline: true,
   showSettings: true,
   analytics: true,
   analyticsID: 'G-MEU_ID',
   adsense: true,
   adsenseID: 'ca-pub-MEU_ID'
});

Funcionamento dos Anúncios do Adsense

Os anúncios automáticos do Google Adsense serão exibidos utilizando apenas a inicialização acima. No entanto, para anúncios manuais, aqueles em que você decide onde colocá-los no site, é necessário incluir o elemento <ins> no código HTML. Veja o exemplo abaixo:

HTML

<ins class='adsbygoogle'
     style='display:block'
     data-ad-client='ID do cliente'
     data-ad-slot='ID do anúncio'
     data-ad-format='auto'
     data-full-width-responsive='true'>
</ins>

O Google Analytics é habilitado/desabilitado nas configurações na opção Cookie de desempenho enquanto o Adsense é gerenciado em Cookies de direcionamento.

Nenhuma configuração adicional é necessária para o funcionamento das ferramentas. Elas são carregadas automaticamente com base nas preferências do usuário definidas no uabiConsent.

Importante: Evitar Conflitos

Se o carregamento do Google Analytics ou do Google Adsense estiver sendo feito por outro método (como scripts diretamente inseridos no HTML), será necessário removê-lo para evitar conflitos com o funcionamento integrado do uabiConsent.

Consentimento Implícito

O consentimento implícito ocorre quando o usuário é considerado como tendo aceitado os termos ou condições do site simplesmente ao navegar ou utilizá-lo, sem a possibilidade de recusar explicitamente (opt-out). Essa prática é comum em países onde regulamentações de privacidade ainda não exigem consentimento explícito para coletar ou processar dados.

Para garantir conformidade com normas globais e respeitar a privacidade dos usuários, recomenda-se sempre oferecer opções claras e possibilitar que os usuários possam gerenciar suas preferências.

O uabiConsent permite configurar o consentimento implícito, conforme demonstrado no exemplo a seguir:

JavaScript

myUabiConsent = new uabiConsent({
   name: 'uabiConsent-',
   lang: 'pt',
   initialConsent: 'granted',
   privacyPolicyUrl: 'https://telazul.drusian.com.br/pt/artigo/politica-de-privacidade',
   showDecline: false,
   showSettings: false
});
  • A opção initialConsent: 'granted' define que o consentimento é concedido automaticamente ao carregar o site.
  • As configurações showDecline: false e showSettings: false desabilitam os botões de recusa e personalização, respectivamente, implementando assim o consentimento implícito.
  • O script exibirá uma mensagem informando que, ao navegar no site, o usuário aceita o uso de cookies de acordo com a política de privacidade, fornecendo um link para consulta.

Ao combinar initialConsent: 'granted' com showSettings: true, o consentimento inicial será garantido automaticamente antes de o usuário interagir com as configurações. No entanto, ao acessar a tela de personalização manual, todas as opções estarão habilitadas por padrão.

Importante: Em países com legislações de privacidade mais rigorosas, como o GDRP e a LGPD, as opções de personalização devem estar desabilitadas por padrão, permitindo que o usuário as habilite manualmente.

Múltiplos idiomas

O uabiConsent oferece suporte a múltiplos idiomas, permitindo que o script seja configurado dinamicamente de acordo com o idioma do site. A seguir, demonstramos como inicializá-lo em um site que utiliza múltiplos idiomas baseados na URL.

Funcionamento Geral

  1. Obtenção do Idioma da URL: A função getSiteLang() extrai o idioma do site a partir da URL no navegador. Essa abordagem pressupõe que a estrutura da URL siga o formato: https://dominio.com/idioma/. Por exemplo:
    • https://dominio.com/pt/ → Idioma: Português (pt)
    • https://dominio.com/en/ → Idioma: Inglês (en)
    • https://dominio.com/es/ → Idioma: Espanhol (es)
  2. Definição da Política de Privacidade: Com base no idioma extraído, o código define a URL da política de privacidade. Isso garante que os usuários tenham acesso à versão correta da política de privacidade em seu idioma.
  3. Inicialização do Script: O script do uabiConsent é então inicializado com as configurações adequadas, incluindo o idioma detectado e a URL da política de privacidade correspondente.

JavaScript

// Função para pegar o idioma da URL
function getSiteLang() {
   const path = window.location.pathname;
   const array = path.split('/');
   return array[1];
}
const myUabiLang = getSiteLang();

// Política de privacidade de acordo com a linguagem
if (myUabiLang == 'pt') {
   myUabiPrivacyPolicy = 'https://telazul.drusian.com.br/pt/artigo/politica-de-privacidade';
} else if (myUabiLang == 'en') {
   myUabiPrivacyPolicy = 'https://telazul.drusian.com.br/en/article/privacy-policy';
} else if (myUabiLang == 'es') {
   myUabiPrivacyPolicy = 'https://telazul.drusian.com.br/es/articulo/politica-de-privacidad';
}

// Inicializando script
myUabiConsent = new uabiConsent({
   name: 'uabiConsent-',     // Prefixo para os cookies
   lang: myUabiLang,         // Idioma detectado
   initialConsent: 'denied', // Consentimento inicial negado
   privacyPolicyUrl: myUabiPrivacyPolicy // URL da política de privacidade
});

Verificando se o Usuário Consentiu

Para o Google Analytics e o Google Adsense, o script já envia automaticamente os sinais correspondentes à aceitação ou recusa dos cookies, sem necessidade de configuração adicional.

No entanto, para recuperar o valor dos cookies de consentimento e gravar novos cookies com base nas escolhas do usuário, ou para integrar o script com outras ferramentas, é necessário utilizar a função getCookie(). Essa função permite verificar o status de um tipo específico de cookie e tomar decisões com base no consentimento do usuário.

JavaScript

if (getCookie(myUabiConsent.opt.name + 'functionalCookies') === 'granted') {
   // Código a ser executado se o usuário consentiu com o uso de cookies funcionais
}

A condição acima verifica se o valor do cookie 'functionalCookies' é 'granted' (consentido). Caso positivo, o código dentro do bloco será executado. Para verificar outros tipos de cookies, basta substituir 'functionalCookies' por:

  • 'performanceCookies' (cookies de desempenho),
  • 'targetingCookies' (cookies de direcionamento).

Para facilitar a depuração e testes, você pode iniciar o uabiConsent com a opção consoleLog: true. Isso exibirá no console do navegador o valor dos cookies de consentimento, permitindo que você valide seu comportamento. Lembre-se de desabilitar esta opção em ambientes de produção.

Funcionalidades

O uabiConsent disponibiliza uma caixa de diálogo para solicitar permissão ao usuário para armazenar cookies com diferentes finalidades. Abaixo estão suas principais funcionalidades:

    1. Dois Tipos de Consentimento:
      • Consentimento Explícito: O usuário escolhe se e a quais cookies deseja consentir. Oferece controle granular sobre as preferências.
      • Consentimento Implícito: Informa ao usuário que os cookies serão armazenados automaticamente, tornando o uso do site condicional ao consentimento.
    2. Política de Privacidade:
      • Permite definir a URL da política de privacidade do site, garantindo conformidade legal e transparência.
    3. Suporte Multilíngue:
      • Suporta três idiomas: Português, Inglês e Espanhol.
      • É possível adicionar novas linguagens, expandindo o alcance global do script.
    4. Customização de Textos:
      • Todos os textos das mensagens e botões são personalizáveis em todas as linguagens.
      • Utiliza textos diferentes para a mensagem principal e o botão de consentimento, dependendo se o consentimento é explícito ou implícito. Ambos são totalmente configuráveis.
    5. Configurações Iniciais:
      • Possibilita definir o consentimento inicial, ou seja, se o consentimento será considerado garantido (granted) ou negado (denied) antes que o usuário faça uma escolha.
    6. Controle de Botões:
      • Permite definir se os botões Recusar Cookies e Personalizar Cookies serão exibidos na interface.
    7. Link para Configurações:
      • Facilita a criação de um link para reabrir a caixa de diálogo de configurações dos cookies, permitindo que o usuário altere suas preferências a qualquer momento.
    8. Logs no Console:
      • Oferece uma opção para registrar os valores dos cookies no console do navegador, útil para depuração e testes. Recomenda-se desativar essa funcionalidade em ambientes de produção.
    9. Integração Automática com Ferramentas:
      • Integra-se automaticamente ao Google Analytics e ao Google Adsense utilizando sinais. Basta fornecer os IDs correspondentes, e as ferramentas serão carregadas com base nas escolhas do usuário.
    10. Personalização Visual:
      • Permite a personalização completa da caixa de diálogo através do arquivo SASS (.scss) que acompanha o script. Isso possibilita ajustar o design para atender às necessidades visuais do site.

Mural do site

Parte do conteúdo deste site, incluindo textos, imagens, gráficos e outros materiais, pode ser gerado ou aprimorado por ferramentas de inteligência artificial (IA). Para mais detalhes sobre o uso de IA, consulte nosso Termo de Uso.

Anúncio
Índice
Anúncio