Um fingerprint TLS que bate com o user agent
Antes de uma página rodar qualquer JavaScript, o handshake TLS já descreveu o cliente. O handshake do Clearcote é o do próprio Chromium, e os poucos campos que mudam entre versões do Chrome seguem a versão que a persona declara, então a camada de rede e o user agent contam a mesma história.
Em todos os planos, ligado por padrão. Não há nada para configurar.
O padrão já está certo
import { launch } from "clearcote";
// default: the ClientHello follows the persona's claimed Chrome major
const browser = await launch({ fingerprint: "account-42", tlsProfile: "match-persona" });
// or pin a major (only together with a matching brandVersion), or leave the build's own TLS untouched:
// tlsProfile: "chrome-150"
// tlsProfile: "native"Destaques
O próprio handshake do Chromium
O BoringSSL do jeito que o Chrome o distribui: a lista de ciphers, os limites de versão e a ordem das extensões a cada conexão são os de verdade, não uma reimplementação.
Segue a versão declarada
Os campos que mudam entre as versões major recentes do Chrome, como o grupo de key share pós-quântico e o codepoint do ALPS, seguem a major declarada em vez de ficar na do próprio build.
Sem emenda entre as camadas
A superfície JavaScript e o handshake vêm de um único navegador, então não há divergência entre um user agent alterado e uma stack de rede intocada.
HTTP/2 da mesma stack
SETTINGS, window updates e a ordem dos headers vêm da própria implementação HTTP/2 do Chromium, não de uma biblioteca cliente separada.
A marca fica nos headers
Edge, Opera e Vivaldi compartilham o handshake do Chromium; a marca vai no user agent e nos client hints, não no ClientHello.
Configurável, raramente necessário
O padrão serve para quase todo mundo. A opção existe para que você nunca fixe uma versão que contradiga a sua versão de marca.
Por que o handshake importa
Um fingerprint TLS (JA3 e o seu sucessor, JA4) resume o ClientHello: quais versões, ciphers, extensões e grupos um cliente oferece, e em que formato. O HTTP/2 adiciona mais uma camada: o frame SETTINGS, os tamanhos de janela e a ordem dos pseudo-headers. Os dois são lidos no servidor, antes de qualquer script rodar, e os dois são baratos de comparar com o user agent.
É nessa comparação que muitas stacks de automação desmoronam. Uma biblioteca HTTP com user agent de Chrome continua enviando o handshake da própria biblioteca, e uma camada stealth em JavaScript muda o que a página lê, mas não o que a rede enviou. O Clearcote é Chromium de ponta a ponta, então não há um segundo cliente por baixo.
O que o Clearcote acrescenta é coerência de versão. Cada release do Chrome muda alguns detalhes do handshake. Quando uma persona declara uma versão do Chrome diferente da do build em que roda, o match-persona ajusta só esses campos para a major declarada e deixa todo o resto como o Chromium gera.
Um user agent falsificado lado a lado com o Clearcote
Para que as pessoas usam
Sites que pontuam o handshake
Muitas redes de borda leem JA3 ou JA4 antes de a página carregar. Um handshake coerente tira uma contradição da equação.
Uma versão de marca definida por você
Se você define brandVersion numa persona Chrome ou Edge, os principais campos do handshake que dependem da versão acompanham esse valor. O resto do navegador continua reportando a versão real do motor, então deixar brandVersion sem definir continua sendo o padrão coerente.
Pesquisa de rede
Compare como os campos do handshake que dependem da versão mudam entre versões major do Chrome, com o mesmo binário.
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
Em todos os planos, na configuração padrão.
Comparar planosPerguntas frequentes
O que é um fingerprint JA3 ou JA4?
Um resumo compacto do ClientHello TLS de um cliente: versões, cipher suites, extensões e grupos suportados. Os servidores usam isso para distinguir navegadores de bibliotecas HTTP e para conferir se um cliente é o que o user agent dele diz. Veja as perguntas e respostas sobre JA3 e JA4.
O Clearcote randomiza o fingerprint TLS?
Não. Handshakes aleatórios não batem com nenhum navegador real, o que os torna fáceis de identificar. O próprio Chrome embaralha a ordem das suas extensões TLS a cada conexão, e o Clearcote mantém esse comportamento exatamente como o Chrome faz.
Uma persona Edge ou Opera muda o ClientHello?
Não. Esses navegadores são Chromium por baixo e compartilham o handshake dele. A marca vai no user agent, nos client hints e nos headers, e é lá que o Clearcote a define.
Quando eu mudaria o tlsProfile?
Quase nunca. O match-persona já segue a versão de marca que você declara. Fixe chrome-<major> só se você definir a versão de marca de outra forma, e use native para deixar o handshake do build exatamente como foi compilado.
Vá mais fundo na documentação
Recursos relacionados
Canvas, WebGL, WebGPU, áudio, fontes, tela e hardware derivados no motor C++ a partir de um único seed, com locale e fuso horário ajustados para combinar, para que todas as superfícies concordem entre si.
Defina um proxy com geoip ligado e o fuso horário, os idiomas e o WebRTC seguem o IP de saída. SOCKS5 com usuário e senha funciona direto no build licenciado.
Um Chromium drop-in para Playwright e Puppeteer: basta trocar um import em Python, Node ou .NET, e o navegador é baixado e verificado por SHA-256 para você.
Rode o Clearcote como endpoint CDP permanente pela imagem Docker oficial, pelo serve() ou por uma CLI, e conecte qualquer framework sem mudar o código.
Leituras relacionadas
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.