Segurança

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.

Exemplo visual de decoy font

⬆ À 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:

  1. Ofuscar o texto no HTML: substituir caracteres latinos por equivalentes homoglíficos de outros alfabetos.
  2. Criar uma web font: um ficheiro .woff2 onde esses code points "estrangeiros" são redesenhados para se parecerem com as letras latinas originais.
  3. 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.