
🚫 Cloudflare email-decode.min.js: porque deve desativar a ofuscação de email e como remover o script num minuto
Visita o PageSpeed Insights e vê um recurso de bloqueio de renderização. Olha com mais atenção: email-decode.min.js, Cloudflare. «Este script está a atrasar o site outra vez», pensa, e vai ao Google à procura de uma solução.
Em abril de 2026, a Cloudflare resolveu finalmente o problema: adicionou o atributo defer e o script deixou de bloquear a renderização. Caso encerrado, ao que parecia. Mas não. O email-decode.min.js continua a deixar soft 404s fantasma na Google Search Console, e a cifra XOR que a Cloudflare usa para «proteger» os endereços pode ser desencriptada em segundos. Sem segurança real, sem relatórios limpos.
Na prática, já nos deparámos com este script muitas vezes durante auditorias a sites: desativa-se num minuto e obtém-se uma Search Console limpa como bónus. Vamos ver como funciona a ofuscação, porque é que o script ainda causa problemas e como removê-lo, com uma alternativa que realmente esconde o email dos bots.
💡 Visão geral rápida:
- Compreender como funciona a Ofuscação de Endereços de Email na Cloudflare e porque é que o
email-decode.min.jsexiste. - Explorar três razões para desativar a ofuscação após a correção de abril de 2026.
- Desativar o script passo a passo: painel, API, Regras de Configuração.
- Implementar uma alternativa usando
IntersectionObservere base64, sem scripts externos ou soft 404s.
Como a Cloudflare esconde o email
Quando um site passa pela Cloudflare, o serviço ativa a Ofuscação de Endereços de Email por defeito. A Cloudflare analisa o HTML das páginas, encontra tudo o que se pareça com um email e substitui cada endereço por uma string hexadecimal codificada com XOR. Para a desencriptar, o email-decode.min.js é injetado no navegador do visitante.

A ideia faz sentido: os bots não veem endereços, as pessoas veem. Na prática, é mais complicado. Até abril de 2026, o script prejudicava abertamente o desempenho, e a própria proteção revelou-se mais fraca do que a Cloudflare promete.
Três razões para desativar o email-decode.min.js
A correção de abril eliminou o bloqueio de renderização. Mas restam três problemas. E são mais graves do que milissegundos perdidos.
Soft 404 na Search Console
A Cloudflare substitui endereços de email por links como /cdn-cgi/l/email-protection#[hex]. Para o Googlebot e outros rastreadores de pesquisa, estes URLs devolvem 404. O resultado: erros de «Soft 404» na Google Search Console. O Ahrefs e o Screaming Frog sinalizam-nos como links internos quebrados.
Isto não é cosmético. Dezenas de erros fantasma da Cloudflare mascaram problemas reais de indexação. Durante uma auditoria técnica, perde-se tempo a filtrar ruído em vez de encontrar páginas realmente quebradas.
A cifra XOR não protege
A Cloudflare usa XOR de byte único, em que a chave está incorporada diretamente na string codificada. O mecanismo de desencriptação é idêntico para todos os sites na Cloudflare. Um spammer precisa de um descodificador e pode extrair endereços de qualquer site em segundos.
A investigação de Spencer Mortensen (2026) testou 25 métodos de ofuscação contra mais de 300 harvesters de spam usando endereços honeypot. Até o CSS primitivo display:none mostrou 100% de bloqueio. A ofuscação da Cloudflare só protege contra bots que não conseguem descodificar XOR, e esses não recolheriam endereços de qualquer forma.
Carga na thread principal em mobile
1,2 KB de JavaScript com defer não é crítico para desktop. Mas num dispositivo Android económico com o CPU sobrecarregado, cada pequena tarefa na thread principal consome o orçamento de INP. Se está a lutar pelos últimos 50 ms, este script é desnecessário.
Desativar a ofuscação: guia passo a passo
Desativar demora um minuto. Escolha o caminho para a sua versão do painel.
Painel novo (Definições de Segurança)
- Inicie sessão no painel da Cloudflare.
- Vá a Segurança → Definições.
- Encontre o interruptor Ofuscação de Endereços de Email.
- Coloque-o em Desligado.
Painel antigo (Scrape Shield)
Se a interface da sua conta ainda não foi atualizada:
- Inicie sessão no painel da Cloudflare.
- Abra a secção Scrape Shield.
- Encontre Email Address Obfuscation e coloque em Off.

O script desaparece instantaneamente. O email-decode.min.js deixa de ser injetado em todas as páginas da zona.
Via API
Para automação ou gestão em massa, envie um pedido PATCH para a API da Cloudflare:
1 curl -X PATCH "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/settings/email_obfuscation" \ 2 -H "Authorization: Bearer <API_TOKEN>" \ 3 -H "Content-Type: application/json" \ 4 --data '{"value":"off"}'
Substitua o seu ID de Zona e token de API com permissão para editar as definições da zona.
Desativação seletiva via Regras de Configuração
Precisa de ofuscação na página de contacto, mas não nas landing pages? Use Regras de Configuração:
- Vá a Regras → Regras de Configuração.
- Crie uma regra com critérios: hostname, caminho do URL ou ambos.
- Adicione a definição Email Obfuscation e defina-a como Off.
- Aplique.
Também pode excluir endereços individuais no HTML, envolvendo-os em comentários:
1 <!--email_off-->[email protected]<!--/email_off-->
Alternativa sem Cloudflare: IntersectionObserver e base64
Se realmente precisa de esconder o email dos bots, há uma forma melhor. Sem script externo, sem soft 404 e sem impacto no INP. A abordagem: codificar o endereço em base64 e desencriptá-lo via IntersectionObserver, apenas quando o visitante faz scroll até ao bloco que contém o email.
Passo 1. Marcação HTML:
1 <a class="email-hidden" href="#" data-email="aW5mb0BleGFtcGxlLmNvbQ=="> 2 [email hidden] 3 </a>
O atributo data-email contém o endereço em base64. Codifique a string com uma ferramenta online ou o comando echo -n "[email protected]" | base64.
Passo 2. Observer. Coloque o script no footer da página:
1 const emailTag = document.querySelector('.email-hidden'); 2 let observer = new IntersectionObserver((entries) => { 3 entries.map((entry) => { 4 if (entry.isIntersecting) { 5 let script = document.createElement('script'); 6 script.onload = function () { 7 emailDecode(entry.target); 8 }; 9 script.src = '/decode-email.js'; 10 document.head.appendChild(script); 11 } 12 }); 13 }); 14 observer.observe(emailTag);
Passo 3. Função de desencriptação, ficheiro decode-email.js:
1 const emailDecode = (e) => { 2 let email = atob(e.dataset.email); 3 e.href = 'mailto:' + email; 4 e.innerHTML = email; 5 };
Resultado: o email é descodificado apenas quando se faz scroll até ele. Impacto zero no INP, zero erros de soft 404. E o base64 não é pior do que o XOR da Cloudflare para «proteção», ambos os métodos são trivialmente reversíveis, mas em conjunto com o IntersectionObserver, o endereço nem sequer entra no DOM no carregamento da página.
Guia em vídeo
Se prefere um guia visual, aqui está uma demonstração de como desativar a ofuscação no painel da Cloudflare:
⁉️🤔 Perguntas frequentes
A ofuscação da Cloudflare afeta todas as páginas do site?
Sim, após adicionar um site à Cloudflare, a Ofuscação de Endereços de Email é ativada para toda a zona. O script
email-decode.min.jsé injetado em todas as páginas onde seja detetado texto semelhante a um email. Pode excluir páginas individuais através de Regras de Configuração e endereços específicos via comentários HTML<!--email_off-->.
O que acontece se eu simplesmente desativar a ofuscação?
O
email-decode.min.jsdeixará de ser injetado imediatamente. Todos os endereços de email no site ficarão visíveis no código-fonte, exatamente como os colocou. Para a maioria dos sites, esta é a operação normal: o email de contacto já é público, e escondê-lo dos bots pode ser feito com métodos mais simples.
A ofuscação da Cloudflare protege contra todos os bots de spam?
Não. A cifra XOR é a mesma para todos os sites, qualquer pessoa pode desencriptar os endereços. Os dados de Spencer Mortensen mostram: até o CSS
display:nonebloqueia 100% dos mais de 300 harvesters de spam testados. A ofuscação da Cloudflare só funciona contra bots primitivos que não tentam descodificar XOR.
Posso esconder o script apenas do PageSpeed Insights?
Não, o PageSpeed Insights verifica a página como um navegador normal. Se o script for injetado, o Lighthouse vê-lo-á. Com a correção de abril de 2026, o bloqueio de renderização desapareceu, mas os efeitos de SEO (soft 404) e o microimpacto no INP permanecem. A única forma de remover completamente o script é desativar a Ofuscação de Endereços de Email no painel.
Como verifico se a ofuscação está realmente desativada?
Abra o código-fonte da página (Ctrl+U) e procure por
email-decode.min.js. A ausência do script significa que a ofuscação está desativada. Em alternativa, verifique a consola do navegador: antes de desativar, o DOM contém<script src="/cdn-cgi/scripts/.../email-decode.min.js">, depois, desaparece. As alterações aplicam-se instantaneamente.
Desativar ou manter: o veredito
Com a correção de abril, o email-decode.min.js deixou de bloquear a renderização. Mas o ruído de SEO (soft 404 na Search Console) e a ilusão de segurança (XOR é reversível em segundos) permanecem. Desativar através do painel demora um minuto. Bónus: relatórios limpos e alguns milissegundos de INP poupados em mobile.
Se a ofuscação for genuinamente necessária, a alternativa com IntersectionObserver e base64 oferece proteção real contra harvesters de spam. Sem efeitos secundários. A escolha é sua, mas o email-decode.min.js em 2026 é mais hábito do que necessidade.



