Explicado
Cuando su cliente abre una conexión TLS, los primeros bytes son un paquete ClientHello que describe qué conjuntos de cifrado, versiones TLS, extensiones, curvas elípticas y valores ALPN admite su cliente. La lista exacta y el orden de estos atributos son específicos de la implementación: el ClientHello de Chrome tiene un aspecto diferente al de Firefox, que tiene un aspecto diferente al de curl, que tiene un aspecto diferente al de la biblioteca `requests` de Python, y así sucesivamente.
JA3 (y su sucesor JA4) es un formato de hash que convierte la estructura del ClientHello en un identificador corto. Los proveedores de soluciones anti-bot calculan este hash para cada conexión TLS entrante y lo comprueban con firmas conocidas. Si su scraper utiliza Python `requests`, su huella TLS coincide con el valor predeterminado de OpenSSL y es identificable al instante como 'no es un navegador real', incluso antes de enviar un solo byte HTTP.
Esta es la razón por la que tantos scrapers fallan en Cloudflare, Akamai y sistemas similares incluso cuando la IP y el User-Agent parecen correctos. La capa TLS revela que la solicitud no provino de Chrome. Las bibliotecas de sigilo modernas (como `curl_cffi`, `tls-client`, Playwright con los parámetros de lanzamiento correctos) imitan las huellas TLS de navegadores reales para evitar esto.
Cómo funciona
JA3 construye la huella a partir de cinco campos del ClientHello: versión TLS, conjuntos de cifrado admitidos, extensiones admitidas, curvas elípticas admitidas y formatos de punto de curva elíptica admitidos. Los une, aplica un hash MD5 al resultado y produce una firma de 32 caracteres.
JA4 (el reemplazo moderno) amplía esto con ALPN, versión, presencia de SNI, manejo de GREASE y ordena las extensiones de una manera estable que es resistente a la aleatorización. JA4 también tiene variantes para QUIC (JA4Q), HTTP (JA4H) y sesión SSL (JA4S). Los servidores calculan la huella y la consultan en listas de permitidos/denegados o la introducen en un modelo de puntuación de riesgo junto con otras señales.