Impressão digital de dispositivo sem cookies: como funciona
Os cookies estão morrendo. Veja como a impressão digital de dispositivo oferece identificação persistente que sobrevive à limpeza de cookies, ao modo anônimo e às atualizações do navegador.
O cookie está morrendo. O Intelligent Tracking Prevention (ITP) do Safari limita a vida útil dos cookies a 7 dias. O Enhanced Tracking Protection do Firefox bloqueia cookies de terceiros por completo. O Privacy Sandbox do Chrome está descontinuando os cookies de terceiros. As exigências de consentimento do GDPR fazem com que os usuários recusem cada vez mais os banners de cookies.
Para a prevenção de fraudes, isso é um problema. Se você não consegue identificar dispositivos de forma persistente, não consegue rastrear reincidentes, detectar multicontas ou vincular sessões suspeitas. A impressão digital de dispositivo resolve isso identificando dispositivos por meio de suas características técnicas, e não por meio de qualquer coisa que se peça ao navegador para lembrar.
Para ser preciso sobre o que isso significa no nosso caso: a Tracio não define cookies de terceiros e não armazena nada que funcione entre sites. Ela define, sim, um cookie próprio, _vid_t, com validade de 365 dias, além de uma cópia do mesmo identificador opaco no localStorage. Esse cookie é um caminho rápido, não o mecanismo — quando ele está presente, a correspondência é imediata e certa, e quando o visitante o apaga, navega em modo anônimo ou bloqueia o armazenamento por completo, o identificador é reconstruído a partir dos próprios sinais do dispositivo, com uma confiança ligeiramente menor. A distinção importa: um sistema que depende de armazenamento perde o visitante quando o armazenamento é limpo, e este não perde.
As categorias de sinais
Impressão digital passiva (não requer JavaScript)
Antes mesmo de a sua página carregar, o navegador revela informações por meio de sinais de nível de rede:
Impressão digital de TLS (JA4). A mensagem TLS Client Hello contém suítes de cifras, extensões, curvas elípticas e algoritmos de assinatura. Usamos o hashing JA4 — uma substituição moderna do JA3 com melhor granularidade.
Análise da pilha TCP/IP. O tamanho da janela TCP, os valores de TTL e as configurações de MSS variam entre sistemas operacionais. Linux, Windows e macOS têm, cada um, configurações características de pilha TCP.
Análise de cabeçalhos HTTP. A ordenação dos cabeçalhos, os valores de Accept-Language e as preferências de conexão diferem entre navegadores.
Impressão digital ativa (JavaScript no lado do cliente)
Impressão digital de canvas. Desenhamos uma cena cuidadosamente projetada — texto específico, formas geométricas e gradientes. GPUs diferentes renderizam isso com sutis diferenças no nível de pixel devido a anti-aliasing, renderização de subpixels e variações na mistura de cores. Fazemos o hash dos dados de pixels.
Impressão digital de WebGL. O WebGL expõe strings de fabricante/renderizador da GPU, tamanhos máximos de textura, extensões suportadas e capacidades de shader. Esses dados identificam fortemente o modelo da GPU e a versão do driver.
Impressão digital de AudioContext. Geramos um sinal de teste e analisamos como ele é processado. Hardwares de áudio diferentes produzem uma saída mensuravelmente diferente por causa de diferenças na precisão de ponto flutuante.
Enumeração de fontes. As fontes de sistema disponíveis variam conforme o SO, o pacote de idioma e o software instalado. Testamos cerca de 300 fontes diagnósticas usando técnicas de medição por canvas.
Propriedades do navigator. Núcleos de CPU, memória do dispositivo, platform, idioma, fuso horário, resolução de tela, profundidade de cor e capacidades de ponteiro e toque.
Análise de entropia
Nem todos os sinais têm o mesmo peso. Medimos a entropia de cada sinal:
| Categoria de sinal | Entropia aproximada |
|---|---|
| Canvas + WebGL combinados | ~18 bits |
| Lista de fontes | ~8 bits |
| AudioContext | ~5 bits |
| Propriedades do navigator | ~7 bits |
| Impressão digital de TLS | ~6 bits |
| Tela + display | ~4 bits |
| Fuso horário + idioma | ~3 bits |
Combinados, nossos 300+ sinais fornecem aproximadamente 50+ bits de entropia — suficiente para identificar de forma única mais de 1 quatrilhão de dispositivos distintos.
Dos sinais a um hash estável
A coleta bruta de sinais é apenas metade do problema. As atualizações de navegador mudam as strings de user agent. As atualizações de driver alteram os parâmetros de WebGL. As instalações de fontes mudam a lista de fontes.
Correspondência difusa
Em vez de exigir correspondências exatas, usamos um algoritmo de correspondência difusa que pondera os sinais por estabilidade e entropia. Sinais estáveis (canvas, modelo de GPU) têm mais peso que sinais voláteis (user agent, resolução de tela).
A geração de candidatos usa locality-sensitive hashing (LSH) sobre os sinais mais estáveis para identificar correspondências potenciais. A pontuação de similaridade calcula uma pontuação ponderada em todas as categorias de sinais, calibrada de modo que mudanças normais no dispositivo não alterem o ID de visitante, enquanto mudanças reais de dispositivo o alterem.
Isso atinge 99,5% de precisão — identificando corretamente visitantes recorrentes ao longo de atualizações de navegador, limpezas de cookies, modo anônimo e trocas de navegador.
Arquitetura que preserva a privacidade
Processamento no lado do servidor. Todo o cálculo da impressão digital acontece em nossos servidores. O agente no lado do cliente coleta os sinais brutos, mas não calcula nem armazena o hash da impressão digital.
Sem armazenamento de PII. Armazenamos hashes de impressão digital, não sinais brutos. O hash é uma função de mão única.
Residência de dados. Os dados de clientes da UE são processados e armazenados em data centers da UE. O Artigo 6(1)(f) do GDPR cobre a prevenção de fraudes como interesse legítimo.
Identificação entre navegadores
O desafio mais difícil é identificar o mesmo dispositivo em diferentes navegadores. Contamos com sinais independentes de navegador: hardware da GPU, características da tela, fuso horário, configurações de idioma, fontes instaladas (no nível do SO) e características da pilha TCP/IP.
A precisão da vinculação entre navegadores é de aproximadamente 94% — menor que a identificação no mesmo navegador, mas suficiente para detectar multicontas entre navegadores no mesmo dispositivo.
Integração
Adicionar a impressão digital de dispositivo leva três linhas de código. O agente carrega de forma assíncrona e envia os sinais coletados à nossa API; o navegador recebe o ID de visitante e o veredito de bot. Todo o enriquecimento no lado do servidor — 35+ Smart Signals — é entregue ao seu backend pelo payload do webhook e pela Data API, de modo que o quadro detalhado de risco nunca passa pelo cliente, onde poderia ser lido ou adulterado.