Decoy Font: Como enganar bots de IA com typography poisoning
O teu texto parece normal aos olhos humanos. Para um LLM, é lixo estrutural. Estamos em 2026. Toda a gente com um negócio online sabe que os crawlers de AI andam a vasculhar websites para treinar modelos. E não, não pedem licença. Para muitos
O teu texto parece normal aos olhos humanos. Para um LLM, é lixo estrutural.
Estamos em 2026. Toda a gente com um negócio online sabe que os crawlers de AI andam a vasculhar websites para treinar modelos. E não, não pedem licença. Para muitos criadores de conteúdo, a sensação é de roubo: o trabalho deles a ser engolido por datasets de treino sem consentimento nem compensação.
Já existem robots.txt, rate limiting, CAPTCHAs e termos de serviço. Mas há uma técnica nova, mais criativa e surpreendentemente eficaz: font poisoning (ou decoy fonts). A ideia é simples: apresentar ao browser um texto que humanos leem perfeitamente, mas que LLMs e scrapers interpretam como nonsense.
⬆ À esquerda: como o texto aparece no browser. À direita: o que o scraper vê.
O que são Decoy Fonts?
A técnica baseia-se num truque do Unicode: homoglifos: caracteres de scripts diferentes que têm o mesmo aspeto visual mas que são representados por code points diferentes.
Por exemplo, a letra latina A (U+0041) e a letra cirílica А (U+0410) são praticamente idênticas no ecrã. Mas para um sistema de parsing, são dois caracteres completamente diferentes.
O font poisoning explora esta diferença. O HTML da página contém texto com caracteres homoglíficos. Uma web font personalizada mapeia esses code points para os glifos latinos corretos. O humano vê o texto normal. O scraper que extrai o texto diretamente do DOM (sem renderizar a web font) obtém uma sopa de caracteres de diferentes alfabetos.
Como funciona na prática
O processo tem 3 passos:
- Ofuscar o texto no HTML: substituir caracteres latinos por equivalentes homoglíficos de outros alfabetos.
- Criar uma web font: um ficheiro .woff2 onde esses code points "estrangeiros" são redesenhados para se parecerem com as letras latinas originais.
- Servir a font via CSS: o browser aplica a font personalizada, o texto fica legível. O scraper que ignora CSS ou não renderiza a font vê o texto ofuscado.
Exemplo concreto: A frase "Olá mundo" pode ser codificada no HTML como "Οlá мundo", com omicron grego (U+039F) em vez de "O" latino e em cirílico (U+043C) em vez de "m". Uma web font faz o mapeamento destes code points para os glifos latinos. Para o scraper que não carrega a font, a frase sai como caracteres gregos e cirílicos misturados.
Ferramentas para criar Decoy Fonts
Já existem ferramentas que automatizam este processo:
- Mixfont: plataforma de geração de fonts por IA. Permite criar fonts personalizadas que fazem mapeamentos não-ortodoxos (descrição por confirmar).
- Glifos ricos: ferramentas como o FontForge (open-source) permitem editar manualmente o mapeamento de code points.
- Bibliotecas JS: scripts que substituem automaticamente texto no DOM com equivalentes homoglíficos e injetam a web font correspondente.
| Carácter Original | Code Point | Homoglifo | Code Point |
|---|---|---|---|
| A (latino) | U+0041 | А (cirílico) | U+0410 |
| O (latino) | U+004F | Ο (grego) | U+039F |
| e (latino) | U+0065 | е (cirílico) | U+0435 |
| c (latino) | U+0063 | с (cirílico) | U+0441 |
| a (latino) | U+0061 | а (cirílico) | U+0430 |
Eficácia contra diferentes scrapers
Nem todos os scrapers são igualmente afetados:
- Crawlers que extraem texto cru do HTML (ex: GPTBot, CommonCrawl) — são os mais vulneráveis. Veem diretamente os code points ofuscados.
- Crawlers com headless browser (ex: alguns scrapers de AI que renderizam a página) — são mais resistentes porque carregam CSS e fonts, vendo o texto correto.
- Ferramentas de acessibilidade (leitores de ecrã) — podem ser afetadas negativamente se não houver fallback adequado.
Nota: Esta técnica não é 100% infalível. Scrapers sofisticados podem comparar o texto renderizado (via headless browser) para detetar discrepâncias. Mas para a maioria dos crawlers de AI atuais, o font poisoning é surpreendentemente eficaz.
Implicações éticas e contra-medidas
Antes de implementares font poisoning no teu site, considera alguns pontos éticos:
- Acessibilidade: leitores de ecrã e ferramentas de acessibilidade dependem do texto cru do DOM. Font poisoning quebra essa dependência. É fundamental ter fallbacks com aria-label ou texto alternativo.
- SEO: o Google e outros motores de busca podem interpretar o texto ofuscado como keyword stuffing ou conteúdo de baixa qualidade. Testa bem o impacto no ranking.
- Efeito colateral em utilizadores legítimos: se alguém copiar texto do teu site com Ctrl+C, pode levar caracteres ofuscados para a clipboard.
- Gato e rato: é uma corrida armamentista. À medida que scrapers evoluem para renderizar páginas completas, o font poisoning perde eficácia.
Conclusão
O font poisoning é uma ferramenta criativa e low-tech para proteger conteúdo contra AI scraping. Não é uma bala de prata, mas é um obstáculo real para a maioria dos crawlers atuais.
Combina com outras técnicas (rate limiting, deteção de bots, robots.txt condicional) para uma defesa em camadas. E não te esqueças da acessibilidade. Um site que só humanos "normais" conseguem ler é um site pior.
Se quiseres experimentar, o Mixfont é um bom ponto de partida para gerar fonts personalizadas. O FontForge é a alternativa open-source para quem quer controlo total sobre o mapeamento de glifos.
Recursos adicionais
Partilhar
Comentários 0
Ainda sem comentários — sê o primeiro.