Glossário

O Que É Fingerprinting de Navegador?

Fingerprinting de navegador é uma técnica que sites usam para identificar e rastrear visitantes coletando um conjunto de atributos do navegador (User-Agent, tamanho de tela, fontes, plugins, hash de canvas, assinaturas WebGL, etc.) e combinando-os em uma assinatura única.

Entenda os sinais que o fingerprinting moderno coleta, por que um 'IP novo' sozinho não é suficiente para parecer humano, e como manter a fingerprint do seu scraper limpa.

Explicado

O fingerprinting de navegador coleta um conjunto de atributos do seu navegador e os transforma em um identificador estável. Mesmo sem cookies, a combinação de User-Agent, idioma, fuso horário, resolução de tela, fontes instaladas, hash de renderização canvas, string do renderizador WebGL, fingerprint do contexto de áudio e dezenas de outros sinais é única o suficiente para identificar um único navegador entre sessões com precisão surpreendente.

As duas grandes categorias são fingerprinting passivo e ativo. O fingerprinting passivo lê atributos que o navegador expõe implicitamente: User-Agent, Accept-Language, client hints sec-ch-ua. O fingerprinting ativo executa JavaScript que sonda o mecanismo de renderização do navegador, o mecanismo de áudio, a GPU e características de temporização, e então calcula um hash.

Para scraping e automação, o fingerprinting importa porque a rotação de IP sozinha não é suficiente. Se você rotaciona por 10.000 IPs residenciais, mas cada requisição carrega o mesmo fingerprint de canvas e o mesmo User-Agent padrão do Playwright, o destino pode correlacionar todas as 10.000 requisições à mesma instância de scraper. Sistemas modernos anti-bot (Cloudflare, Akamai, PerimeterX, Datadome) usam fingerprinting intensamente junto com análise de IP.

Como Funciona

Quando seu navegador carrega uma página com código de fingerprinting, o script enumera propriedades do navegador (UA, idioma, plugins, tela, fuso horário), desenha um canvas oculto com texto e gradientes específicos e depois lê os pixels renderizados (fingerprint de canvas), cria um contexto WebGL e lê as strings de fabricante e renderizador da GPU (fingerprint de WebGL), gera um tom com a API de áudio e lê o espectro (fingerprint de áudio), e cronometra operações específicas (math.tan, drift de performance.now) para sinais de hardware.

Todos esses valores são transformados em hash para formar um ID de fingerprint e enviados de volta ao servidor. Como a combinação de até mesmo uma dúzia desses atributos é altamente única, o ID resultante identifica de forma estável o navegador mesmo após limpar cookies, iniciar novas sessões e mudar de IP.

Tipos

Fingerprinting Passivo

Lê atributos que o navegador expõe implicitamente via cabeçalhos HTTP e globais JavaScript: User-Agent, Accept-Language, dicas sec-ch-ua, tamanho da tela, fuso horário, idioma. Barato, funciona em qualquer lugar.

Impressão Digital Ativa / Canvas

Executa JavaScript que desenha em um canvas oculto e lê de volta o hash de pixels. Diferentes combinações de GPU/driver produzem renderizações sutilmente diferentes, tornando as impressões digitais de canvas altamente estáveis por dispositivo.

WebGL Fingerprinting

Sonda o contexto WebGL em busca do fabricante da GPU, da string do renderizador e das extensões suportadas. Navegadores headless e GPUs virtualizadas costumam produzir assinaturas características.

Fingerprinting de Áudio

Gera uma forma de onda de áudio com a API AudioContext e lê de volta o espectro de frequência resultante. O processamento de áudio difere sutilmente entre sistemas operacionais e drivers de áudio, produzindo um hash estável por dispositivo.

Impressão Digital de TLS / Rede (JA3, JA4)

Faz fingerprint do próprio handshake TLS — lista de cifras, extensões, ordem ALPN, valores GREASE. Identifica o cliente HTTP subjacente (curl, Python requests, Playwright, etc.) antes mesmo da camada de aplicação ter uma chance.

Casos de Uso Comuns

Defesa contra bots em páginas de login, cadastro e formulários
Deduplicação de contas (uma impressão digital = um usuário)
Pontuação de fraude em fluxos financeiros e de compra de anúncios
Rastreamento de visitantes recorrentes sem cookies
Detecção de scraper na camada de aplicação
Perguntas Frequentes

Perguntas frequentes

Perguntas comuns sobre fingerprinting de navegador.

Porque sistemas anti-bot fazem fingerprint do navegador, não apenas do IP. Se 10.000 solicitações vêm de 10.000 IPs mas todas carregam o mesmo fingerprint de canvas, o mesmo TLS JA3 e o mesmo User-Agent, o sistema pode correlacioná-las como um único scraper. Você precisa de rotação de IP E higiene de fingerprint para parecer muitos usuários distintos.

Prontos para uso, sim. Os navegadores padrão do Playwright/Puppeteer têm sinais característicos (navigator.webdriver=true, listas específicas de plugins, ausência de objetos chrome-app) que os fornecedores anti-bot detectam facilmente. Use plugins stealth ou perfis de inicialização personalizados para mascarar esses sinais e corresponder a uma impressão digital de usuário real.

Corresponda a uma fingerprint de usuário real da forma mais próxima possível: User-Agent Chrome moderno com cabeçalhos sec-ch-ua correspondentes, tamanho de tela realista, fuso horário correspondente à geo do seu proxy, canvas/WebGL/áudio de aparência real (ou use bibliotecas stealth que os randomizam) e um cliente TLS que produza um handshake semelhante ao do Chrome. Combine tudo isso com proxies residenciais e você se torna difícil de identificar por fingerprint como um scraper.

As impressões digitais de Canvas e WebGL são as mais estáveis por dispositivo. O handshake TLS (JA3/JA4) é o mais estável por cliente HTTP. A combinação de canvas + TLS + User-Agent é suficiente para identificar de forma única a maioria das configurações de scraper, por isso os fornecedores de anti-bot combinam os três.

Sim, com limites. Ferramentas como puppeteer-extra-plugin-stealth, undetected-chromedriver e randomizadores no estilo BrowserScan falsificam canvas, WebGL, áudio e outros sinais ativos. O problema é a consistência: se sua impressão digital é randomizada a cada requisição, mas cookies/sessão persistem entre requisições, essa incompatibilidade é, em si, uma impressão digital.

Os próprios IPs móveis carregam alta confiança (CGNAT). A impressão digital do navegador é independente do tipo de IP: um proxy móvel com um User-Agent de desktop ainda é detectável como uma incompatibilidade. Para scraping móvel, combine proxies móveis com uma impressão digital de navegador móvel real (UA móvel, sec-ch-ua-mobile=?1 móvel, tamanho de tela móvel).