JavaScript Fingerprinting & Detecção de Bots: Como Sites Identificam Você

862 visualizações · curtidas · 11 compartilhamentos
Compartilhar em
Por Unled Network · 5 de abr de 2026 · 17 min de leitura
JavaScript Fingerprinting & Detecção de Bots: Como Sites Identificam Você

Principais Conclusões

  • JavaScript fingerprinting coleta mais de 50 características do navegador para criar um identificador único - mais persistente que cookies e mais difícil de bloquear.
  • Sinais chave de fingerprinting incluem Canvas, WebGL, AudioContext, fontes, propriedades de tela e dados da API do navegador.
  • Sistemas anti-bot combinam JS fingerprinting com TLS fingerprinting (JA3/JA4) e análise comportamental para detecção de bots altamente precisa.
  • Navegadores headless (Puppeteer, Playwright) e ferramentas de automação deixam rastros detectáveis que o fingerprinting expõe - APIs ausentes, saídas idênticas, anomalias de tempo.
  • É possível falsificar fingerprints, mas está cada vez mais difícil - sistemas anti-bot usam verificações de consistência que detectam valores falsificados incompatíveis.

Toda vez que você visita um site, seu navegador revela silenciosamente dezenas de características únicas - sua resolução de tela, modelo de GPU, fontes instaladas, peculiaridades de processamento de áudio e a maneira exata como seu navegador renderiza elementos de canvas invisíveis. Combinados, esses sinais criam uma impressão digital do navegador tão única quanto uma impressão digital humana.

Essa tecnologia alimenta sistemas modernos de detecção de bots, prevenção de fraudes e defesas anti-automação. Entender como funciona é essencial, seja para defender seu site de bots ou para entender por que certos sistemas de segurança desafiam seu tráfego.

A maior alavanca para o desempenho de mídia paga em 2026 é a higiene da conta. Contas antigas, instrumentos de pagamento limpos e perfis de navegador isolados se compõem em uma vantagem de 30 a 50% CPACusto por Aquisição. O preço que você paga por uma conversão (venda, inscrição, lead).Saiba mais no glossário → na mesma criação.

Sergey M., Comprador de Mídia Sênior na Unled Network

O Que é JavaScript Fingerprinting?

JavaScript fingerprinting é uma técnica que usa APIs JavaScript no lado do navegador para coletar características do dispositivo e do ambiente, criando um identificador único para cada sessão de navegador. Diferente de cookies (que os usuários podem apagar) ou endereços IP (que mudam), as impressões digitais são:

Estatísticas de Unicidade: Pesquisa do projeto Panopticlick da EFF descobriu que 83,6% dos navegadores têm uma impressão digital única. Quando o canvas fingerprinting é incluído, a unicidade excede 95%. Sistemas modernos usando mais de 50 sinais alcançam quase 100% de unicidade em populações típicas de usuários.

Como Funciona o Browser Fingerprinting

Um script de fingerprinting geralmente é executado em três fases:

  1. Coleta: APIs JavaScript consultam propriedades do navegador - objeto navigator, propriedades de tela, renderização de canvas, capacidades de WebGL, processamento de AudioContext, etc.
  2. Hashing: Os valores coletados são combinados e convertidos em hash (geralmente SHA-256 ou MurmurHash3) em uma string compacta de impressão digital
  3. Comparação: O hash é comparado com impressões digitais conhecidas - correspondendo a um visitante anterior, uma ferramenta de bot conhecida ou um ambiente falsificado

Sinais Chave de Fingerprinting

Canvas Fingerprinting

O sinal de fingerprinting mais poderoso. Um elemento <canvas> oculto desenha texto, formas e gradientes. A saída pixel-a-pixelUm pequeno snippet de rastreamento no seu site que registra ações dos visitantes (visualizações de página, adicionar ao carrinho, compras) para que a plataforma possa otimizar.Saiba mais no glossário → varia com base no GPU, versão do driver, mecanismo de renderização de fontes e implementação de anti-aliasing. Dois dispositivos diferentes quase nunca produzem uma saída de canvas idêntica.

WebGL Fingerprinting

O WebGL expõe informações do GPU (renderizador, fornecedor) e produz uma saída de renderização única. A extensão WEBGL_debug_renderer_info revela o modelo exato do GPU. Combinado com testes de renderização WebGL, isso cria uma forte impressão digital de hardware.

AudioContext Fingerprinting

A API Web Audio processa sinais de áudio de maneira diferente em cada dispositivo devido a diferenças de hardware e software. Ao gerar um oscilador e analisar a saída, scripts de fingerprinting capturam características únicas de processamento de áudio.

Font Fingerprinting

Diferentes versões de SO, pacotes de idiomas e aplicativos instalados adicionam coleções de fontes únicas. Ao medir a largura/altura de renderização de texto em várias fontes, scripts determinam quais fontes estão instaladas - criando uma impressão digital baseada em fontes.

Propriedades do Navigator & Tela

SinalO Que RevelaEntropia
navigator.userAgentVersão do navegador, SO, tipo de dispositivoMédia (facilmente falsificável)
navigator.languageIdioma(s) preferido(s)Baixa-Média
navigator.hardwareConcurrencyContagem de núcleos da CPUBaixa
navigator.deviceMemoryQuantidade de RAM (aproximada)Baixa
screen.width/heightResolução de telaMédia
screen.colorDepthCapacidade de profundidade de corBaixa
navigator.platformString da plataforma do SOBaixa (obsoleta)
navigator.maxTouchPointsCapacidade de toqueBaixa
Intl.DateTimeFormat().resolvedOptions().timeZoneFuso horárioMédia

Sinais Adicionais de Alto Valor

TLS Fingerprinting (JA3/JA4)

O fingerprinting TLS opera no nível da conexão - antes de qualquer JavaScript ser executado:

JA3 Fingerprinting

Criado pela Salesforce, o JA3 faz hash dos componentes da mensagem TLS Client Hello: versão SSL, cifras, extensões, curvas elípticas e formatos de ponto EC. Cada cliente HTTP (Chrome, Firefox, solicitações Python, Go http, curl) produz um hash JA3 único. Isso identifica o software cliente real mesmo quando os cabeçalhos do user-agent são falsificados.

JA4 Fingerprinting

O novo padrão JA4 melhora o JA3 com um formato mais legível para humanos e melhor rastreamento de versão. Ele cria uma string de impressão digital como "t13d1715h2_8daaf6152771_b0da82dd1658" que codifica versão TLS, contagem de cifras, contagem de extensões e valores ALPN.

Por que o fingerprinting TLS é devastador para bots: Falsificar uma impressão digital TLS requer modificar a biblioteca TLS no nível C/C++ - muito mais complexo do que alterar strings de user-agent. A maioria dos operadores de bots usa bibliotecas HTTP Python, Go ou Node.js que têm hashes JA3 distintos que os identificam instantaneamente como clientes não-navegadores.

Como Sistemas Anti-Bot Usam Fingerprinting

Soluções anti-bot modernas como Cloudflare Bot Management, Akamai Bot Manager e DataDome combinam fingerprinting com várias camadas de detecção:

  1. Verificação de fingerprint TLS: Verificar se a conexão vem de um navegador real, não de uma biblioteca HTTP
  2. Execução de JavaScript: Executar scripts de coleta de fingerprint - bots que não conseguem executar JS são imediatamente sinalizados
  3. Validação de consistência: Verificar se o fingerprint JS corresponde ao fingerprint TLS (por exemplo, se JA3 diz Chrome mas o canvas diz headless, sinalize)
  4. Comparação com bot conhecido: Comparar o fingerprint com o banco de dados de assinaturas de ferramentas de bot conhecidas
  5. Sobreposição comportamental: Combinar pontuação de fingerprint com movimento do mouse, tempo de clique e padrões de rolagem

Detectando Navegadores Headless

Navegadores headless (Chrome headless, Puppeteer, Playwright) deixam sinais reveladores: