Saltar al contenido
Red · JA3 · JA4 · HTTP/2

Una huella TLS que coincide con el user agent

Antes de que una página ejecute JavaScript, el handshake TLS ya describió al cliente. El handshake de Clearcote es el propio de Chromium, y los pocos campos que cambian entre versiones de Chrome siguen a la versión que declara la persona, así que la capa de red y el user agent cuentan la misma historia.

En todos los planes, activado por defecto. No hay nada que configurar.

El valor por defecto ya es el correcto

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"

Lo más destacado

El propio handshake de Chromium

BoringSSL tal como lo distribuye Chrome: la lista de cifrados, los límites de versión y el orden de extensiones por conexión son los reales, no una reimplementación.

Sigue a la versión declarada

Los campos que cambian entre versiones mayores recientes de Chrome, como el grupo de key share poscuántico y el codepoint de ALPS, siguen a la versión mayor declarada en lugar de quedarse en la del build.

Sin costuras entre capas

La superficie de JavaScript y el handshake vienen de un mismo navegador, así que no hay discrepancia entre un user agent parcheado y un stack de red sin parchear.

HTTP/2 desde el mismo stack

SETTINGS, las actualizaciones de ventana y el orden de encabezados vienen de la propia implementación HTTP/2 de Chromium, no de una biblioteca cliente aparte.

La marca vive en los encabezados

Edge, Opera y Vivaldi comparten el handshake de Chromium; la marca va en el user agent y los client hints, no en el ClientHello.

Configurable, rara vez necesario

El valor por defecto le sirve a casi todo el mundo. La opción existe para que nunca fijes una versión que contradiga tu versión de marca.

Por qué importa el handshake

Una huella TLS (JA3, y su sucesor JA4) resume el ClientHello: qué versiones, cifrados, extensiones y grupos ofrece un cliente, y de qué forma. HTTP/2 agrega otra capa: el frame SETTINGS, los tamaños de ventana y el orden de los pseudoencabezados. Ambos se leen en el servidor, antes de que se ejecute ningún script, y ambos son fáciles de comparar con el user agent.

Esa comparación es donde muchos stacks de automatización se desmoronan. Una biblioteca HTTP con un user agent de Chrome sigue enviando el handshake de su propia biblioteca, y una capa stealth en JavaScript cambia lo que lee la página, pero no lo que envió la red. Clearcote es Chromium de principio a fin, así que no hay un segundo cliente por debajo.

Lo que Clearcote agrega es coherencia de versión. Cada versión de Chrome cambia algunos detalles del handshake. Cuando una persona declara una versión de Chrome distinta de la del build sobre el que corre, match-persona ajusta solo esos campos a la versión mayor declarada y deja todo lo demás tal como lo genera Chromium.

Un user agent falsificado frente a Clearcote

Automatización con un user agent falsificado
Clearcote
Handshake
Del navegador o la biblioteca HTTP subyacente
El propio BoringSSL de Chromium
El UA declara Chrome X
El handshake es el de la versión que realmente se ejecuta
Los campos que dependen de la versión siguen a Chrome X por defecto
SETTINGS de HTTP/2 y orden de encabezados
Del cliente subyacente
Del stack HTTP/2 de Chromium
Dónde se cambia el UA
Una sobrescritura de encabezado o un script inyectado
En el motor, junto con los client hints

Para qué se usa

Sitios que puntúan el handshake

Muchas redes edge leen JA3 o JA4 antes de que cargue la página. Un handshake coherente quita una contradicción del panorama.

Una versión de marca definida por ti

Si defines brandVersion en una persona de Chrome o Edge, los principales campos del handshake que dependen de la versión la siguen. El resto del navegador sigue reportando la versión que realmente tiene el motor, así que dejar brandVersion sin definir sigue siendo la opción coherente por defecto.

Investigación de red

Compara cómo cambian los campos del handshake que dependen de la versión entre versiones mayores de Chrome con el mismo binario.

Clearcote está hecho para la privacidad, las pruebas, la investigación y la automatización lícita. Tú eres responsable de cómo lo usas y de respetar los términos de los sitios que visitas.

Qué plan lo incluye

En todos los planes, con la configuración por defecto.

Comparar planes

Preguntas frecuentes

¿Qué es una huella JA3 o JA4?

Un resumen compacto del ClientHello de TLS de un cliente: sus versiones, suites de cifrado, extensiones y grupos compatibles. Los servidores lo usan para distinguir navegadores de bibliotecas HTTP y para comprobar que un cliente es lo que dice su user agent. Consulta las preguntas y respuestas sobre JA3 y JA4.

¿Clearcote aleatoriza la huella TLS?

No. Los handshakes aleatorios no coinciden con ningún navegador real, lo que los hace fáciles de identificar. El propio Chrome mezcla el orden de sus extensiones TLS en cada conexión, y Clearcote mantiene ese comportamiento exactamente como lo hace Chrome.

¿Una persona de Edge u Opera cambia el ClientHello?

No. Esos navegadores son Chromium por debajo y comparten su handshake. La marca va en el user agent, los client hints y los encabezados, que es donde Clearcote la define.

¿Cuándo debería cambiar tlsProfile?

Casi nunca. match-persona ya sigue la versión de marca que declaras. Fija chrome-<major> solo si defines la versión de marca de otra forma, y usa native para dejar el handshake del build exactamente como se compiló.

Profundiza en la documentación

Características relacionadas

Prueba Clearcote

Un reemplazo directo para Playwright y Puppeteer, coherente hasta el handshake TLS, con un build de código abierto para empezar.

Gratis para un navegador con GitHub. Sin tarjeta.