Pular para o conteúdo

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.

NavegadorO que o CreepJS disse
Chrome 153 do dia a dia, uso manual19% like headless · 0% headless · 0% stealth
Chrome 153 genuíno, Playwright25% like headless · 33% headless · 0% stealth
Clearcote 153, Playwright + seed25% 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 .local lido 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.