Pular para o conteúdo
Identidade · compilada no motor

Controle do fingerprint do navegador, no motor

Um fingerprint de navegador são dezenas de valores que precisam fazer sentido juntos. O Clearcote deriva todos eles de um seed e os entrega pelos próprios caminhos de código do Chromium, então uma página que lê a GPU, a tela e as fontes recebe respostas que pertencem a uma única máquina plausível, com idioma e fuso horário definidos para combinar com ela: no frame principal, nos iframes e nos workers.

A persona por seed e o ruído por site estão em todos os planos, inclusive no build aberto.

Um seed, uma identidade

import { launch } from "clearcote";

// the same seed returns the same identity; a new seed is a new one
const browser = await launch({
  fingerprint: "account-42",
  timezone: "America/New_York",
  acceptLanguage: "en-US,en",
});

Destaques

Um seed, uma máquina

O --fingerprint deriva uma persona correlacionada: faixa de CPU e memória, tela, profundidade de cor, GPU, vozes, codecs e dispositivos de mídia que combinam entre si.

Por site, não global

O ruído de canvas e WebGL é derivado por site, no modelo de farbling do Brave, então esses hashes mudam de um site para outro, enquanto o hardware que a persona reporta continua o mesmo em todo lugar, como numa máquina real.

Nativo em todo realm

Os valores vêm de getters em C++, então o toString, os property descriptors e um iframe ou worker novo enxergam código nativo e a mesma resposta.

Uma GPU coerente consigo mesma

O vendor e o renderer do WebGL ficam constantes durante a sessão, os limites do getParameter acompanham essa GPU até onde esta máquina consegue sustentá-los, e o WebGPU descreve o mesmo adaptador.

Importe uma máquina real

Carregue um perfil capturado de um Chrome real, ou escolha um na biblioteca aberta de perfis, e os valores dele substituem os sintéticos.

Pegue leve onde importa

O lightStealth varia só os metadados seguros. fingerprintNoise: false mantém a identidade e tira o ruído de canvas e WebGL onde o próprio ruído é pontuado.

Por que consistência vale mais que valores engenhosos

A detecção raramente depende de um único valor incomum. Ela procura contradições: uma string de GPU que não bate com os pixels, um fuso horário que não combina com o IP, um worker que reporta um hardware diferente do da página. Então a pergunta que o Clearcote responde não é quais valores falsificar, mas como manter todos eles consistentes entre si e com a máquina por baixo.

O seed é determinístico. O mesmo seed produz a mesma identidade em toda inicialização, como um visitante recorrente, e um seed novo produz uma identidade nova. As leituras de canvas 2D e WebGL levam uma pequena perturbação por seed e por site, porque a leitura já varia entre máquinas reais. O áudio renderizado e os client rects ficam exatos de propósito: perturbá-los gera valores que nenhum navegador real emite, o que chama mais atenção do que dois perfis compartilhando um hash. A documentação de fingerprint passa por cada superfície.

Algumas alegações o host não consegue sustentar, e a documentação diz isso com todas as letras. Um tamanho de tela que não bate com a janela real, ou uma GPU que a máquina não consegue de fato renderizar, é testado contra o host e falha. É por isso que o lightStealth mantém a tela real e os overrides de tela são opcionais, que a ponte de canvas existe e que o ponto de partida recomendado varia menos, e não mais.

O que está coberto

SuperfícieO que o Clearcote faz
Leitura de canvas 2D e WebGLRuído por seed e por site, dentro da variação natural entre máquinas reais
Renderer e limites do WebGLUma GPU constante durante a sessão, com os limites de parâmetros dessa GPU onde quer que esta máquina consiga sustentá-los
WebGPUO mesmo adaptador do WebGL, então por padrão as duas APIs apontam a mesma GPU
ÁudioA taxa de amostragem e a latência do AudioContext seguem a persona; as amostras renderizadas ficam exatas
Fontes e vozes de sínteseOs conjuntos de fontes e vozes da persona
Hardware e telahardwareConcurrency, deviceMemory, pixel ratio, profundidade de cor, pontos de toque, e a tela e a área de trabalho da persona (o lightStealth mantém a tela real)
Locale e horárioAccept-Language, navigator.language, Intl e o fuso horário concordam
User agent e client hintsMarca, versão, plataforma, bitness e modelo, vindos do motor
TLSO ClientHello segue a versão do Chrome que a persona declara
Sinais de automaçãonavigator.webdriver e os indícios de headless

A lista completa de switches, com o que cada um faz, está na referência da flag de fingerprint.

Para que as pessoas usam

Privacidade

Um navegador de fábrica reporta a combinação de valores da sua própria máquina. Uma persona reporta uma máquina plausível e consistente que não é a sua.

Identidades separadas

Dê a cada conta o seu próprio seed, para que as contas não compartilhem um fingerprint de renderização.

Testar código sensível a fingerprint

Veja como o seu próprio código de antifraude, analytics ou personalização reage a hardwares, GPUs e locales diferentes.

Pesquisa sobre fingerprinting

Reproduza o que uma página de teste mede, com entradas controladas e repetíveis.

O Clearcote foi feito para privacidade, testes, pesquisa e automação lícita. Você é responsável pela forma como o usa e por seguir os termos dos sites que visita.

Qual plano inclui

A persona por seed, o ruído por site, os overrides de metadados e a correspondência de TLS estão em todos os planos, inclusive no build aberto. O build licenciado (grátis com GitHub) acrescenta alguns switches mais finos, realismo de comportamento e recebe primeiro as novas versões major do Chromium, e o Pro não libera nenhum spoofing que o Grátis com GitHub não tenha.

Comparar planos

Perguntas frequentes

O que é spoofing de fingerprint do navegador?

É alterar os valores que um site lê para reconhecer um navegador: GPU, tela, fontes, hardware, idioma e assim por diante. A maioria das ferramentas faz isso sobrescrevendo propriedades JavaScript. O Clearcote faz isso no motor do Chromium, então os valores vêm de código nativo e permanecem consistentes entre si.

Por que não usar um spoofer de fingerprint em JavaScript?

Funções sobrescritas se denunciam. O toString retorna o código-fonte do override em vez de [native code], os property descriptors mudam e um iframe ou worker novo traz de volta o valor original. O Clearcote não tem uma camada dessas para ser encontrada. Veja como a detecção funciona.

O mesmo seed gera sempre o mesmo fingerprint?

Sim. O seed deriva de forma determinística a persona e o ruído por site, então o mesmo seed é a mesma identidade em toda inicialização, e um seed novo é uma identidade nova.

Duas contas na mesma máquina podem ter fingerprints de canvas diferentes?

Sim, com seeds diferentes: as leituras de canvas e WebGL variam por seed. Um perfil de dispositivo importado só muda os valores reportados, não a renderização, então use um seed por conta para separar a renderização. O áudio renderizado e os client rects vêm da máquina por baixo e são iguais para todas as identidades que rodam nela.

Isso torna a automação indetectável?

Nenhuma ferramenta pode prometer isso, e nós não prometemos. O Clearcote remove as contradições que um navegador com spoofing costuma carregar. Comportamento, reputação do IP e a forma como você o usa continuam importando. O teste de fingerprint mostra como o seu próprio setup aparece.

Vá mais fundo na documentação

Recursos relacionados

Experimente o Clearcote

Plug-and-play no Playwright e no Puppeteer, coerente até o handshake TLS, com um build de código aberto para começar.

Grátis para um navegador com GitHub. Sem cartão.