CreepJS explicado
O CreepJS é o teste de fingerprinting mais usado por pesquisadores e por desenvolvedores de navegadores antidetect. Ele não dá aprovado ou reprovado; mostra o que o seu navegador revela, onde os valores se contradizem e três porcentagens de quão headless ou stealth ele parece.
Um projeto de pesquisa de código aberto de Abraham Juliot. Abrir o CreepJS
O que é o CreepJS?
O CreepJS é uma página de pesquisa de fingerprinting de código aberto, de Abraham Juliot, hospedada no GitHub Pages. Ele coleta um conjunto muito amplo de sinais, de WebGL e áudio a fontes, workers e WebRTC, e gera um hash para cada seção, para você ver exatamente qual parte de um fingerprint mudou entre duas visitas.
O que o diferencia é que ele procura mentiras: valores que foram alterados por JavaScript ou que não batem entre a página e um Web Worker. A seção “Headless” resume isso em três números. Como é de código aberto, dá para ler exatamente como cada verificação funciona.
O que o CreepJS verifica
Headless
Três porcentagens: o quanto o navegador se parece com um headless (“like headless”), quantos sinais claros de headless ele mostra (“headless”) e quantos sinais de patches de stealth ele mostra (“stealth”).
Lies
Funções do navegador que foram sobrescritas em JavaScript, que é como a maioria dos plugins de stealth funciona e como o CreepJS os pega.
Workers
Valores lidos dentro de um Web Worker e comparados com os da página: user agent, GPU, fuso horário, idioma, núcleos e memória.
Renderização
Medições de canvas, WebGL, áudio, fontes e DOM rects, cada uma com o seu hash.
WebRTC, fuso horário e mais
Candidatos de rede, fuso horário e locale, tela e dezenas de seções menores.
Como ler o seu resultado no CreepJS
- % like headless
- Sinais fracos, comuns em navegadores headless, mas que também aparecem em navegadores normais. Um número diferente de zero aqui é normal.
- % headless
- Sinais claros de um navegador headless ou automatizado. Esse é o número para ficar de olho.
- % stealth
- Sinais de patches de stealth, como funções sobrescritas. Um plugin de stealth em JavaScript aparece aqui.
- FP ID e fuzzy hash
- Identificadores do seu fingerprint inteiro. Eles mudam sempre que qualquer coisa muda, então servem para comparar visitas, não para julgar um navegador.
Como navegadores reais se saíram
Medido em 20 e 21 de setembro de 2026 em um PC com Windows 11 (NVIDIA RTX 3070), numa conexão de fibra residencial na Holanda, sem proxy nem VPN. Três navegadores: o Chrome 153 do dia a dia de uma pessoa, com bloqueador de anúncios, usado manualmente; o mesmo Chrome 153 genuíno controlado pelo Playwright; e o Clearcote 153 controlado pelo Playwright com um seed de fingerprint.
| Navegador | O que o CreepJS disse |
|---|---|
| Chrome 153 do dia a dia, uso manual | 19% like headless · 0% headless · 0% stealth |
| Chrome 153 genuíno, Playwright | 25% like headless · 33% headless · 0% stealth |
| Clearcote 153, Playwright + seed | 25% like headless · 0% headless · 0% stealth |
O número “headless” foi onde a automação apareceu: 33% no Chrome genuíno sob o Playwright, 0% no Clearcote e no Chrome da própria pessoa. O 0% de stealth do Clearcote é esperado, porque ele muda os valores dentro do motor em vez de sobrescrever funções em JavaScript, então a detecção de mentiras não tem nada para encontrar.
Resultados que aparecem em navegadores normais
- Uma porcentagem de “like headless” diferente de zero. Até o Chrome da própria pessoa mostrou 19%.
- Um candidato de host WebRTC terminado em
.locallido como vazamento. É a proteção mDNS do Chrome escondendo o seu endereço local, e não expondo; por isso a auditoria do Clearcote conta isso como aprovado.
Perguntas frequentes
O que é um bom resultado no CreepJS?
0% headless e 0% stealth são os números que importam. Uma porcentagem de “like headless” na casa dos 10% ou 20% é normal; o Chrome do dia a dia de uma pessoa mostrou 19% no nosso teste.
Por que o CreepJS mostra um ID de fingerprint diferente a cada vez?
O ID é um hash de tudo o que ele mediu, então qualquer mudança, de uma fonte nova a um tamanho de janela diferente, altera o ID. Ele serve para comparar duas visitas, não como pontuação.
O CreepJS detecta o puppeteer-extra-plugin-stealth?
Ele foi feito para pegar funções sobrescritas em JavaScript, que é como esse plugin funciona; isso aparece como mentiras (lies) e na porcentagem de stealth. Veja a comparação com o plugin de stealth para entender por que essa abordagem se denuncia.
O CreepJS é a mesma coisa que a auditoria do Clearcote?
Não. O CreepJS é uma página de pesquisa que mostra achados brutos; a auditoria do Clearcote roda 294 verificações de coerência e explica cada resultado. Os dois se sobrepõem e discordam em alguns pontos, como os candidatos WebRTC mDNS.
Quer entender cada verificação?
A auditoria do Clearcote roda 294 verificações de coerência em qualquer navegador que a abrir, com uma explicação em linguagem simples e uma correção para cada uma. Grátis, sem conta.
Leituras relacionadas