Ofuscação de e-mail: qual é o método eficaz em 2026?
(spencermortensen.com)- Para proteger endereços de e-mail de coletores de spam, foram testadas várias técnicas de ofuscação em HTML, CSS e JavaScript e comparadas suas taxas de bloqueio
- Em testes com 426 amostras de texto e 399 amostras de links, a maioria das técnicas baseadas em JS e várias em CSS e SVG registraram 100% de bloqueio
- Métodos antigos como entidades HTML e codificação de URL ainda mostraram alta eficácia de bloqueio
- Por outro lado, exibição por imagem, substituição por símbolos e inversão da direção do texto prejudicam seriamente a acessibilidade e a usabilidade
- Em 2026, transformação com JS, criptografia AES e abordagens baseadas em interação do usuário são avaliadas como os meios mais seguros e práticos para proteger e-mails
Comparação de técnicas de ofuscação de endereços de e-mail (em 2026)
- São apresentadas várias técnicas de ofuscação para ocultar endereços de e-mail de coletores de spam (harvesters), junto com estatísticas sobre a eficácia real de cada método
- Após proteger cada endereço de e-mail de uma forma diferente, foi medida a possibilidade de acesso pelos harvesters em amostras de 426 (texto) e 399 (links), calculando-se a taxa de bloqueio
- A maioria das técnicas baseadas em JavaScript e algumas técnicas com CSS e SVG alcançaram 100% de bloqueio
- Métodos antigos como entidades HTML e codificação de URL ainda mantêm altas taxas de bloqueio
- Algumas técnicas prejudicam gravemente a acessibilidade ou a usabilidade, tornando-se inadequadas para uso real
1. Técnicas de proteção para e-mail em texto comum
- O endereço de e-mail é exibido diretamente na página, mas protegido com várias técnicas de HTML, CSS e JS para impedir que harvesters o leiam
- Ao combinar várias técnicas e proteger por segmentos, é possível maximizar a eficácia
-
Sem proteção (No protection)
- Taxa de bloqueio de 0% (0 bloqueados entre 426)
- O endereço de e-mail fica exposto como está e é coletado por todos os harvesters
-
Entidades HTML (HTML Entities)
- Taxa de bloqueio de 95%
- Bibliotecas do lado do servidor fazem a decodificação automaticamente, mas na prática ainda bloqueiam a maioria dos harvesters
-
Comentários HTML (HTML Comments)
- Taxa de bloqueio de 99%
- Só conseguem bloquear harvesters básicos com fraca interpretação de tags HTML
- É simples, mas ainda mantém alta eficácia de bloqueio
-
HTML SVG
- Taxa de bloqueio de 100%
- Oculta o endereço de e-mail como texto dentro de um objeto SVG
- Permite acesso por leitores de tela para pessoas com deficiência visual
- É obrigatório usar o elemento
<object>; com<img>ou SVG inline há risco de exposição no código-fonte - Como depende de fonte, é necessário definir uma web font
-
CSS display:none
- Taxa de bloqueio de 100%
- Explora a limitação de harvesters que não conseguem aplicar regras de estilo
- É possível manter a acessibilidade, e recomenda-se usar
display:noneem vez de ocultação apenas visual
-
Concatenação de strings em JS (Concatenation)
- Taxa de bloqueio de 100%
- Pode ser implementada de forma simples, sem dependências externas
- Como o e-mail completo existe no HTML, é frágil do ponto de vista de segurança
-
JS Rot18
- Taxa de bloqueio de 100%
- Usa uma cifra de rotação de caracteres semelhante a ROT13
- Harvesters simples não conseguem decodificar, mas é vulnerável a coletores que ignoram JS
-
Transformação com JS (Conversion)
- Taxa de bloqueio de 100%
- O HTML contém apenas uma string sem sentido, e uma função JS a converte no e-mail real
- A maioria dos harvesters não consegue executar DOM ou JS, então não consegue reconstruí-lo
- É uma técnica simples e muito eficaz
-
Criptografia AES com JS
- Taxa de bloqueio de 100%
- Protege o e-mail com criptografia AES-256
- Usa a SubtleCrypto API do navegador e funciona apenas em ambiente HTTPS
- Sem o arquivo JS, a descriptografia é impossível
-
Interação do usuário com JS (User interaction)
- Taxa de bloqueio de 100%
- O e-mail só é exibido quando o usuário interage com a página
- Para o harvester, isso exigiria execução de DOM + simulação de eventos do usuário, o que na prática é inviável
-
Substituição por símbolos em HTML (Symbol substitution)
- Taxa de bloqueio de 96%
- Substitui por elementos como “AT” e “DOT”
- Como o usuário precisa corrigir manualmente, há perda de usabilidade
-
Instruções HTML (Instructions)
- Taxa de bloqueio de 100%
- Inclui no e-mail instruções manuais como “remove the .fluff”
- Só pode ser interpretado por humanos ou IA, mas gera muito incômodo ao usuário
-
Imagem HTML
- Taxa de bloqueio de 100%
- Exibe o endereço de e-mail como imagem
- Não há acessibilidade para pessoas com deficiência visual, não dá para copiar etc., ou seja, a usabilidade entra em colapso
-
CSS content
- Taxa de bloqueio de 100%
- Exibe o e-mail com o pseudo-elemento
::after - Visualmente aparece, mas não pode ser copiado, e também pode ser reconstruído apenas com o HTML
- É avaliada como uma técnica inútil
-
Direção de texto em CSS (Text direction)
- Taxa de bloqueio de 100%
- Inverte a string com
direction: rtl - Se o harvester ignorar CSS, é fácil decodificar
- O texto é copiado ao contrário, prejudicando a usabilidade
2. Técnicas de proteção para links clicáveis
- Método para proteger o atributo
hrefde linksmailto: - Se o texto do link contiver o e-mail, é necessário combinar com uma técnica separada de ofuscação de texto
-
Sem proteção
- Taxa de bloqueio de 0% (0 bloqueados entre 399)
- O endereço de e-mail fica totalmente exposto
-
Entidades HTML
- Taxa de bloqueio de 100%
- Apesar da decodificação automática no servidor, ainda bloqueia a maioria dos harvesters
-
Codificação de URL
- Taxa de bloqueio de 95%
- É fácil de decodificar, mas na prática ainda bloqueia a maioria dos harvesters
-
Redirecionamento HTTP
- Taxa de bloqueio de 100%
- Oculta o link
mailto:fazendo-o parecer um link comum - Configura um redirecionamento 302 ou 301 no
.htaccess - Usa
nofollow, noindexpara impedir indexação por mecanismos de busca - Ao preencher automaticamente campos de e-mail, é necessário o sinalizador QSA
-
HTML SVG
- Taxa de bloqueio de 100%
- Oculta o link de e-mail dentro de SVG
- Mantém a acessibilidade, sendo obrigatório usar
<object> - É necessário definir a fonte
-
Concatenação de strings em JS
- Taxa de bloqueio de 100%
- Pode ser implementada sem dependências externas
- Como o e-mail está incluído diretamente no HTML, não é seguro
-
JS Rot18
- Taxa de bloqueio de 99%
- Rotação de caracteres semelhante a ROT13
- Harvesters simples não conseguem decodificar
-
Transformação com JS (Conversion)
- Taxa de bloqueio de 100%
- No HTML existe apenas um link falso, e o JS o converte no
mailto:real - Como o harvester só consegue acessar o HTML, não pode reconstruí-lo
- É uma técnica simples e muito eficaz
-
Criptografia AES com JS
- Taxa de bloqueio de 100%
- Link de e-mail criptografado com AES-256
- Usa a SubtleCrypto API do navegador e requer HTTPS
-
Interação do usuário com JS
- Taxa de bloqueio de 100%
- O link só é ativado quando o usuário interage com a página
- É difícil para harvesters reproduzirem isso
3. Críticas e contrapontos
- Sobre a afirmação de que “spammers não raspam a web, eles compram bases de dados vazadas”
- Os endereços de e-mail desta página foram publicados apenas nesta página, e mesmo assim receberam milhares de spams
- Sobre a afirmação de que “não é preciso proteger”
- Conteúdos populares são coletados intensamente, então é necessário considerar a possibilidade de viralização
- Sobre a afirmação de que “basta ter filtro de spam”
- Essas técnicas podem ser implementadas gratuitamente e sem falsos positivos, sendo recomendável usá-las em conjunto com filtros
- Sobre a afirmação de que “quando a técnica se torna conhecida, deixa de servir”
- As estatísticas confirmam que as mesmas técnicas continuam eficazes há décadas
4. Metodologia do experimento
- Endereços de e-mail protegidos com cada técnica de ofuscação foram realmente publicados e operados como honeypots para harvesters
- Quando chegava spam, considerava-se que a técnica de proteção daquele endereço havia sido quebrada
- As mensagens foram agrupadas por spammer para gerar estatísticas com base no número de remetentes
- Para evitar que a filtragem de spam distorcesse as estatísticas, foram montados um servidor de e-mail e um cliente próprios
- Como harvesters baseados em texto e em links são diferentes, as estatísticas foram separadas
- O tamanho da amostra ainda é pequeno, mas espera-se maior confiabilidade estatística à medida que o número de links aumentar
Conclusão
- Técnicas baseadas em JS de transformação, criptografia e interação do usuário oferecem o melhor nível de segurança e acessibilidade
- CSS display:none e a técnica com objeto SVG também se destacam em acessibilidade e taxa de bloqueio
- Substituição por símbolos, imagem e inversão da direção do texto não são recomendadas por prejudicarem seriamente a usabilidade
- Quando for necessário publicar um e-mail, uma transformação simples com JS ou criptografia AES é a escolha mais eficaz em 2026
1 comentários
Comentários do Hacker News
Antigamente eu me preocupava com coleta de e-mails, mas agora simplesmente deixo meu e-mail público no meu site
A filtragem de spam é boa o bastante
Ainda assim, foi interessante ver essa análise das técnicas. Fiquei surpreso que até métodos simples funcionem bem
mailto:, e recebo só alguns spams por diaTalvez a filtragem da Zoho seja boa, mas não acho que seja particularmente melhor que a de serviços grandes
Por isso dá para usar seu próprio método simples, mas se você o divulgar ele pode ser neutralizado imediatamente
display:noneconseguirem bloquear mais de 90%, talvez valha reconsiderarMeu e-mail aparece em texto puro mais de 90 vezes em commits de repositórios populares de código aberto no GitHub
Mesmo assim, quase não recebi spam em 8 anos
Talvez o formato entre
<e>confunda os coletoresHoje em dia, parece mais comum comprar listas de e-mail do que coletar diretamente
Spam chega com frequência para
git@,contact@,admin@Recentemente até começaram a chegar e-mails se passando pelo CEO para endereços falsos como
finance@Ironicamente, o e-mail que deixei em texto puro no meu perfil do HN quase não recebe spam
Minha hipótese é que os coletores de e-mail não fazem parsing de HTML, só procuram strings ao redor do caractere
@Como fazer parsing de HTML custa caro, esse tipo de abordagem simples pode ser eficiente
Por isso entidades HTML parecem funcionar
Então podem simplesmente ignorar esses endereços
@também funciona bem com pequenas variaçõesO texto foi bem escrito, mas senti falta de mencionar a estratégia de ter o domínio inteiro sob seu controle e dar um e-mail único para cada destinatário
Quando vier spam, é só bloquear aquele endereço
Ou então dá para simplesmente viver sem e-mail. Hoje em dia, e-mails temporários resolvem a maioria dos casos
Mas a maior parte do spam vem de amigos ou familiares compartilhando meu endereço em apps
Com um simples método de ligação em JavaScript, consegui bloquear 100% do spam em e-mails públicos
O efeito é parecido e é muito mais fácil de administrar
Existe o método de esconder um endereço de e-mail tarpit no site
Você o oculta com CSS, humanos não veem, e se um bot mandar e-mail para ele, aquele IP é bloqueado por 24 horas
Como também existe spam vindo de contas do Gmail, os efeitos colaterais são grandes
Bom conteúdo, mas acho que o título mais adequado seria "Email address obfuscation"
Só que, vendo textos assim, dá a impressão de que os spammers também podem aprender com eles
Há um tempo testei se expressões como “me at foobar dot com” ainda seriam eficazes
Usei um LLM para tentar resolver vários métodos de ofuscação de e-mail, e quase tudo que não era baseado em CSS ou JS pôde ser interpretado
Mesmo assim, hoje os filtros de spam funcionam tão bem que deixar o e-mail em texto puro não causou grandes problemas
Na verdade, e-mails de notificação de serviços são mais incômodos
Se houver abuso, basta descartar aquele endereço
Seria ideal se cliente e servidor de e-mail suportassem esse tipo de API
Então acredito que a ofuscação básica para bloquear bots simples baseados em regex ainda continue válida
No começo deste ano, enquanto fazia um interpretador de Brainfuck em C, tentei usá-lo para ofuscar e-mails
Cada e-mail era armazenado como um programa Brainfuck, e um interpretador em JS o executava para mostrar o texto puro
O JS era carregado de um domínio externo, e o código real só era enviado após validar o referer
Claro que isso não serve contra coletores que executam JS, mas foi um experimento de ofuscação criativa interessante
Esse texto também parece um guia para deixar os coletores de e-mail mais inteligentes