¿Qué es una huella dactilar JA3 / JA4?
A Huellas digitales JA3 / JA4 es un hash corto derivado de un protocolo de establecimiento de conexión TLS que identifica qué biblioteca TLS, navegador o bot ha establecido la conexión, sin depender de la dirección IP. JA3 fue introducido por Salesforce en 2017 utilizando MD5; JA4 es el sucesor moderno de FoxIO que utiliza SHA-256 y ordena los campos de entrada para evitar la evasión. Los sistemas de defensa contra bots, las plataformas antifraude y los sistemas de control de acceso utilizan estos hash para señalar a los clientes sospechosos a nivel de protocolo.
Cómo funcionan las huellas digitales JA3 y JA4
JA3 concatena cinco campos del mensaje «ClientHello» de TLS: la versión de TLS, los conjuntos de cifrado, las extensiones, las curvas elípticas y los formatos de puntos EC; a continuación, aplicales un hash MD5 para obtener una cadena de 32 caracteres (Fingerprint.com - Identificación de TLS, 2024). Cada cliente que envía la misma combinación, independientemente de su dirección IP, genera el mismo hash. Esa coherencia permite a los sistemas de seguridad agrupar el tráfico por tipo de cliente en lugar de por origen.
JA4 subsana una vulnerabilidad fundamental de JA3: el orden de las extensiones. Los clientes podían alterar el orden de las extensiones TLS para generar un hash JA3 diferente, a pesar de presentar capacidades idénticas. JA4 ordena los conjuntos de cifrado y las extensiones antes de aplicar el hash, eliminando así esa vía de elusión. El resultado es una cadena de tres partes (por ejemplo, t13d1516h2_8daaf6152771_b186095e22b6), formada por un prefijo legible para el ser humano más dos hash SHA-256 truncados de 12 caracteres (Especificaciones del FoxIO-LLC JA4, 2025). JA4 también elimina los valores GREASE, que los navegadores insertan para realizar pruebas de compatibilidad y que, de no ser así, añadirían ruido.
La suite FoxIO JA4+ amplía el concepto más allá de TLS. JA4H abarca los encabezados de las solicitudes HTTP, JA4S abarca la respuesta TLS del lado del servidor y JA4L mide los patrones de latencia de la red. La combinación de subhuellas mejora considerablemente la precisión de la detección.
Casos de uso
Los sistemas de mitigación de bots utilizan hash JA3/JA4 para identificar bibliotecas de scraping (como las de Python, requests, httpx, o versiones de Chromium sin interfaz gráfica) incluso cuando dichos clientes cambian de dirección IP o falsifican las cadenas de agente de usuario. Una dirección IP residencial, combinada con una pila TLS de Python, sigue generando una huella digital reconocible que no corresponde a un navegador.
Las plataformas de control de acceso combinan JA3/JA4 con otras señales (agente de usuario, orden de tramas HTTP/2, hash de canvas) para crear un perfil compuesto del dispositivo. Una discrepancia entre el navegador declarado y la huella digital TLS constituye una señal de anomalía significativa que merece la pena investigar.
Los investigadores de seguridad y los equipos rojos utilizan las huellas digitales a la inversa: determinan qué biblioteca TLS espera un servidor de destino y, a continuación, configuran su cliente para que se adapte a ella. Herramientas como curl-impersonate y el utls La biblioteca modifica la pila TLS para generar un protocolo de establecimiento de conexión compatible con Chrome.
Al acceder a sitios web a gran escala a través de proxies residenciales, la huella digital JA4 del cliente debe seguir coincidiendo con la de un navegador real; de lo contrario, se pierde la ventaja que ofrece la reputación de la IP. La práctica habitual consiste en combinar direcciones IP residenciales auténticas (como las de la red Massive) con un protocolo TLS que refleje con precisión el navegador.
Preguntas frecuentes
Una huella digital JA3 es un hash MD5 de 32 caracteres de cinco campos de TLS ClientHello (versión de TLS, conjuntos de cifrado, extensiones, curvas elípticas y formatos de puntos EC), introducida por Salesforce en 2017 (Fingerprint.com - Identificación de TLS, 2024). Permite a las herramientas de seguridad de red identificar la biblioteca TLS de un cliente sin necesidad de recurrir a la dirección IP.
JA4 ordena los campos antes de aplicar el algoritmo de hash, lo que anula la aleatorización basada en el orden de las extensiones, y utiliza SHA-256 en lugar de MD5. El resultado es un texto legible para los humanos a_b_c una cadena en lugar de un hash hexadecimal opaco (Especificaciones del FoxIO-LLC JA4, 2025). JA4 también ignora los valores GREASE, lo que hace que las huellas digitales sean más estables a pesar de las actualizaciones del navegador.
Sí. Bibliotecas como curl-impersonate y utls Modificar la pila TLS para imitar exactamente el ClientHello del navegador de destino. Los sistemas de defensa contra bots contrarrestan esto combinando JA4 con señales adicionales, como el orden de los tramas HTTP/2, los patrones temporales y las huellas digitales de canvas, con el fin de crear un perfil compuesto más difícil de falsificar.
La rotación de direcciones IP no modifica la huella digital TLS del cliente HTTP subyacente. Un rastreador que se ejecute desde una dirección IP residencial, pero que utilice la pila TLS predeterminada de Python, seguirá coincidiendo con una huella digital de bot conocida. Para evitar la detección, es necesario combinar la rotación de direcciones IP con una emulación TLS que reproduzca con precisión el comportamiento de un navegador.