Bloquear Scripts Antes do Consentimento: Como Saber se Seu Banner Realmente Funciona
Um banner que aparece depois que os scripts carregam não é conformidade — é evidência de violação.
Veja como o bloqueio real de scripts categorizados com data-cf-category funciona
e como verificar se o seu site está protegido.
Como bloquear scripts antes do consentimento com a LGPD?
Para bloquear scripts antes do consentimento, cada tag de terceiro (Google Analytics, Meta Pixel, etc.)
deve receber o atributo data-cf-category="analytics" ou data-cf-category="marketing".
O CookieFácil usa um mecanismo de type rewriting: o atributo type do script é alterado
para text/plain antes que o navegador o execute. Um MutationObserver complementar intercepta
scripts injetados dinamicamente. Após o consentimento, os scripts categorizados são clonados e reinseridos
para execução.
CookieFácil auxilia na adequação à LGPD, mas não substitui assessoria jurídica especializada.
O problema: banners que não bloqueiam nada
A maioria dos banners de cookies exibe a interface de consentimento corretamente — mas não impede que os scripts de analytics e marketing carreguem antes disso. O navegador executa os scripts na ordem em que os encontra no HTML, e isso acontece muito antes do banner ser renderizado na tela.
O que acontece em um site sem bloqueio real
O HTML é processado de cima para baixo. Tags <script> no <head>
executam imediatamente. O GA4, o Meta Pixel e o GTM carregam tipicamente entre 40ms e 100ms após
o início da página — muito antes de o JavaScript do banner sequer inicializar, o que costuma
ocorrer entre 300ms e 500ms.
Resultado: quando o visitante vê o banner pela primeira vez, os scripts de rastreamento já transmitiram dados para o Google, Meta e outros terceiros. A escolha exibida no banner é cosmética, não técnica.
DevTools — Network Timeline
Scripts de analytics e marketing disparam 400ms antes do banner aparecer.
Implicação jurídica — Art. 7º da LGPD: O tratamento de dados pessoais (incluindo IDs de dispositivo, endereço IP e comportamento de navegação coletados por scripts de analytics e marketing) exige uma base legal válida. Para cookies não essenciais, essa base legal é o consentimento do titular — que deve ser obtido antes do início do tratamento. Scripts que disparam antes do consentimento constituem tratamento sem base legal, independentemente de o banner ser exibido na mesma página.
Seu site já coleta dados antes do consentimento?
Verificar agora — gratuitoComo o bloqueio real funciona: MutationObserver + type rewriting
O CookieFácil usa dois mecanismos complementares para garantir que scripts categorizados
com data-cf-category não executem antes do consentimento.
Passo 1 — Type rewriting
Quando o navegador encontra uma tag <script type="text/plain">, ele
ignora o conteúdo e não executa o script. O CookieFácil, ao inicializar, percorre o DOM
e reescreve o atributo type de todo script que contenha data-cf-category
de text/javascript (ou sem tipo) para text/plain — antes que o
navegador possa executá-los.
Após o visitante conceder consentimento para uma categoria, os scripts dessa categoria são
clonados, têm seu type restaurado para text/javascript, e são
reinseridos no DOM para execução normal.
Passo 2 — MutationObserver
O type rewriting funciona para scripts presentes no HTML inicial. Mas e os scripts injetados dinamicamente via JavaScript — como os criados por GTM, frameworks SPA (React, Vue, Angular) ou outros snippets de terceiros?
Para esses casos, o CookieFácil instancia um MutationObserver que monitora
o DOM em tempo real. Quando um novo nó <script> é inserido, o observer
verifica se ele possui data-cf-category. Se possuir, intercepta antes da
execução e aplica o mesmo mecanismo de type rewriting — independentemente de como o script
foi criado.
Passo 3 — Como categorizar seus scripts corretamente
O bloqueio funciona apenas para scripts que possuem o atributo data-cf-category.
Scripts sem esse atributo não são interceptados e executam normalmente. É responsabilidade do
proprietário do site marcar os scripts de terceiros com a categoria correta.
Incorreto — não será bloqueado:
const script = document.createElement('script');
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX';
document.head.appendChild(script);
// PROBLEMA: sem data-cf-category, NÃO será bloqueado
Sem data-cf-category, o script executa imediatamente — o bloqueio não é ativado.
Correto — será bloqueado até o consentimento:
const script = document.createElement('script');
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX';
script.setAttribute('data-cf-category', 'analytics');
document.head.appendChild(script);
// CORRETO: será bloqueado até o consentimento de analytics
O MutationObserver intercepta o script antes da execução e aguarda o consentimento.
Também correto — tag HTML direta:
<script data-cf-category="analytics"
src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX">
</script>
<!-- Type rewriting intercepta antes da execução -->
Valores aceitos para data-cf-category:
analytics | marketing | functional
Scripts marcados como necessary (necessários) nunca são bloqueados.
O que acontece sem bloqueio real?
Para DPOs e equipes jurídicas: estas são as exposições concretas quando scripts de terceiros executam antes do consentimento registrado.
Coleta sem base legal — Art. 7º LGPD
Scripts de analytics transmitem dados comportamentais, IDs de dispositivo e endereço IP ao primeiro page view — antes de qualquer consentimento. Esse tratamento ocorre sem base legal válida, pois o consentimento deve anteceder o início do tratamento, não ser registrado posteriormente.
Transferência internacional sem autorização — Art. 33 LGPD
Dados enviados ao Google (servidores nos EUA e EU) e ao Meta (EUA) antes do consentimento constituem transferência internacional de dados pessoais sem a autorização exigida pelo Art. 33 da LGPD — uma infração autônoma, além da coleta sem base legal.
Sanção administrativa — Art. 52 LGPD
A ANPD pode aplicar multa de até 2% do faturamento do grupo econômico no Brasil referente ao último exercício, limitada a R 50 milhões por infração. Cada page view com scripts não consentidos pode ser interpretado como uma infração separada.
Banner visível ≠ prova de conformidade
A existência de um banner na página não é prova de conformidade. A prova real é o registro de consentimento com timestamp e token criptográfico associado ao momento exato em que o script foi liberado — não ao momento em que o banner foi exibido.
Integração com o Google Consent Mode v2: Além do bloqueio de scripts, sites com Google Ads e GA4 devem implementar o sinal de consentimento correto para que a modelagem de conversão funcione. Saiba como implementar o GCM v2 corretamente →
Seu DPO já checou se os scripts estão realmente bloqueados?
Ativar bloqueio real agoraComo verificar se o seu site realmente bloqueia scripts
Três métodos para confirmar tecnicamente se os scripts de terceiros aguardam o consentimento antes de executar.
Usar a ferramenta: verificar se meu site está bloqueando scripts
Verificar meu site agoraGratuito. Sem cadastro. Resultado em segundos.
1. DevTools — Aba Network
Abra o DevTools (F12) antes de acessar a página. Na aba Network, recarregue sem aceitar o banner. Filtre por analytics.js, gtm.js, fbevents.js. Se esses arquivos aparecerem nos primeiros segundos — antes de qualquer interação — o bloqueio não está funcionando.
2. GA4 DebugView
Ative o GA4 DebugView (via extensão Google Analytics Debugger) e acesse
a página sem aceitar o banner. Se o evento page_view aparecer no DebugView
antes de você aceitar — o script do GA4 está carregando antes do consentimento e não
está sendo bloqueado.
3. Google Tag Assistant
Com o Google Tag Assistant (extensão Chrome), acesse a página e verifique
quais tags disparam no carregamento inicial — antes de qualquer aceite. Tags que disparam
no estado "sem consentimento" precisam ser categorizadas com data-cf-category
para que o bloqueio seja ativado.
Comece a bloquear scripts agora — sem cartão de crédito
O Plano Grátis inclui bloqueio de scripts categorizados e MutationObserver para sites com até 2.000 visitantes/mês. Faça upgrade conforme crescer.
GRÁTIS
Para começar a proteger seu site
1 site · até 2.000 visitantes/mês
Bloqueio de scripts categorizados
MutationObserver incluído
Registro de consentimentos
BÁSICO
Para sites em crescimento
3 sites · até 10.000 visitantes/mês
Exportação CSV de logs
Google Consent Mode v2 automático
Remover marca CookieFácil
PROFISSIONAL
Para múltiplos sites e agências
10 sites · até 100.000 visitantes/mês
CSV + PDF + relatórios avançados
Regras geográficas (LGPD / GDPR)
CSS personalizado no banner
FAQ — Bloqueio de Scripts e LGPD
Scripts e consentimento
Dúvidas técnicas e jurídicas sobre como o bloqueio de scripts funciona na prática. Veja também o guia de implementação do Google Consent Mode v2.
-
O CookieFácil bloqueia todos os scripts do meu site automaticamente?
Não. O CookieFácil bloqueia scripts que possuem o atributo data-cf-category (com valores analytics, marketing ou functional). Scripts sem esse atributo não são interceptados e executam normalmente. É responsabilidade do proprietário do site identificar e marcar os scripts de terceiros com a categoria correta.
-
O que acontece com scripts que não têm o atributo data-cf-category?
Scripts sem data-cf-category não são interceptados pelo mecanismo de type rewriting nem pelo MutationObserver. Eles executam normalmente no carregamento da página. Para bloquear um script, o proprietário do site deve adicionar o atributo data-cf-category com o valor correspondente à categoria do script (analytics, marketing ou functional).
-
O MutationObserver funciona com React, Vue e scripts injetados dinamicamente?
Sim. O MutationObserver monitora todas as inserções de nós no DOM, independentemente de como o script foi criado — por frameworks SPA, GTM, ou qualquer outro código JavaScript. Quando um novo elemento <script> é inserido com data-cf-category, o observer o intercepta antes da execução e aplica o bloqueio, aguardando o consentimento da categoria correspondente.
-
Qual a diferença entre o CookieFácil e um banner que só coleta preferências sem bloquear?
A diferença é arquitetural. Um banner puramente cosmético exibe uma interface de consentimento, mas os scripts de analytics e marketing já carregaram antes do banner ser visível. O CookieFácil usa type rewriting: antes da execução, o atributo type dos scripts categorizados é alterado para text/plain, impedindo que o navegador os execute. Somente após o consentimento registrado, os scripts são reinseridos para execução. É a diferença entre registrar uma preferência e tecnicamente impedir o tratamento.