Ir al contenido
Tutorial

Detecte raspadores de IA con huellas dactilares TLS, no agentes de usuario

| 6 min read

GPTBot, ClaudeBot y PerplexityBot ahora falsifican agentes de usuario de Chrome en más del 30 % de las solicitudes. La toma de huellas dactilares JA4 TLS los captura en el apretón de manos, incluso antes de que su origen analice los encabezados.

Network cables representing TLS handshakes and bot fingerprinting at the edge
Photo by Thomas Jensen on Unsplash

Tu robots.txt dice User-agent: GPTBot Disallow: /. GPTBot lo honra. La docena de oleoductos RAG construidos sobre requests, httpxy Chrome sin cabeza con una cadena Mozilla/5.0 en los encabezados no. Muestras de tráfico recientes de grandes editores muestran que entre el 30 y el 60% de las visitas a "Chrome" se originan en pilas TLS que no son del navegador. El User-Agent es teatro; el Cliente TLS Hola es la verdad.

JA4, el formato de huellas dactilares TLS que FoxIO publicó en 2023, codifica las partes de un Cliente. Hola, un cliente no puede cambiar fácilmente sin bifurcar su biblioteca TLS: orden de cifrado, extensiones, ALPN, algoritmos de firma. Chrome real y Python httpx El script tiene huellas digitales que no se parecen en nada, sin importar lo que escriban en el encabezado User-Agent. Esta publicación muestra cómo leer JA4 en el borde, clasificarlo mediante /v1/tls/fingerprinty tomar medidas antes de que la solicitud llegue a su origen.

Cómo se ve JA4

Un JA4 consta de tres secciones unidas por guiones bajos. La primera sección codifica la versión TLS, ALPN y el recuento de cifrado. El segundo conjunto de cifrado hashes. El tercero, extensiones hashes y algoritmos de firma. Una huella digital típica de Chrome 124:

t13d1516h2_8daaf6152771_e5627efa2ab1

Una pitón httpx 0,27 cliente:

t13d1517h2_8daaf6152771_b1ff8ab2d16f

Mismo TLS 1.3, mismo ALPN h2, hash de cifrado similar, pero el hash de extensión difiere porque httpx negocia una orden de extensión diferente de BoringSSL. Esa tercera sección es el discriminador que atrapa a los raspadores que se hacen pasar por Chrome.

Clasificar una huella digital

Enviar la JA4 a /v1/tls/fingerprint y obtenga una identificación del cliente, un veredicto y una puntuación de confianza. El punto final mantiene un corpus de huellas dactilares indexado por biblioteca de cliente y rango de versiones.

Respuesta de muestra para Python httpx JA4 arriba:

La verdict El campo es la única pieza sobre la que necesitas actuar en el borde. browser_match es el atajo booleano para "¿hay alguna versión real conocida del navegador?" y es un denominador útil para el monitoreo.

Trabajador de Cloudflare, 30 líneas

Cloudflare expone JA4 en request.cf.ja4 para cualquier zona con huellas dactilares TLS habilitadas (gratis en el plan Pro, disponible a través de encabezados de Trabajadores en el nivel gratuito con tls_client_hello pedido). Guarde en caché el veredicto durante una hora porque las huellas digitales son estables hasta que se actualiza una biblioteca cliente.

El caché mantiene la tasa de llamadas API proporcional a las huellas digitales únicas, no al volumen de solicitudes. Un sitio típico ve menos de 5000 JA4 distintos por día, por lo que la llamada ascendente es rara en estado estable. Los trabajadores aislados desalojan el mapa durante el arranque en frío, por lo que la caché está limitada en la práctica; para orígenes de alta cardinalidad, cambie a caches.default con un TTL de 1 hora.

Lo mismo en Express

Si su CDN reenvía el JA4 en un encabezado (el fastly-tls-ja4, Cloudflare cf-ja4, o el suyo propio de un Worker ascendente), el controlador de origen es un middleware ligero.

Decidir acciones por veredicto

Three response paths cover most cases. No bloquees el depósito desconocido; quemará a usuarios reales en nuevas versiones de navegador.

El código de estado 402 es intencional. Indica a los operadores del raspador /api para obtener licencias en lugar de decirles que están bloqueados, que es lo que lo coloca en una lista de "editores hostiles a la IA". La versión amigable le permite conseguir un cliente API ocasional en lugar de un montón de Twitter.

Medir el impacto

Antes de voltear cualquier bloque, inicie sesión en JA4 más User-Agent durante una semana. El gráfico que importa es "la proporción de solicitudes en las que User-Agent reclama Chrome pero JA4 dice scraper". La mayoría de los equipos ven entre el 15 y el 40%. Ese número es su radio de explosión si envía una lista de bloqueo solo para User-Agent. Después de habilitar la activación basada en JA4, el mismo gráfico debería mostrar que el porcentaje cae a un solo dígito en cuestión de horas.

El nivel gratuito de botoi cubre 1000 clasificaciones de huellas dactilares por día (ráfaga de 5 solicitudes/min). Junto con el caché, hay suficiente espacio para cualquier sitio pequeño o mediano. Coge una llave en botoi.com/api/signup.

Referencia de punto final: API de huellas dactilares TLS. Relacionado: Observabilidad de API cuando los agentes de IA son quienes más llaman.

FAQ

¿Por qué las agentes de usuario ya no funcionan?
Los rastreadores de entrenamiento de IA y sus muchos imitadores (bots reales, raspadores del mercado gris, canales RAG creados por clientes) envían cada vez más "Mozilla/5.0... Chrome/120" porque los editores agregaron bloques robots.txt y User-Agent. El protocolo de enlace TLS lo establece la biblioteca del cliente (Go net/http, Python httpx, Node undici, Chrome sin cabeza) y es mucho más difícil de falsificar sin reescribir el cliente.
¿Qué es JA4?
JA4 es un formato de huellas dactilares TLS Client Hello publicado por FoxIO en 2023. Combina la versión TLS negociada, los conjuntos de cifrado, las extensiones, ALPN y los algoritmos de firma en una cadena como t13d1516h2_8daaf6152771_e5627efa2ab1. Dos clientes que comparten un JA4 están usando la misma pila TLS, independientemente de lo que indique su encabezado User-Agent.
¿Bloqueará esto a usuarios reales?
No. Real Chrome, Safari y Firefox tienen JA4 conocidos que cambian solo cuando hay cambios en la versión del navegador. El punto final de botoi marca las huellas digitales asociadas con las bibliotecas de scraping (curl, wget, request, httpx, Go default, Node undici, Chrome sin cabeza con parches antidetección). Usted permite las huellas digitales del navegador y cuestiona o limita la velocidad del resto.
¿Pueden los raspadores falsificar JA4?
Sí, con esfuerzo. Herramientas como curl-impersonate y la biblioteca tls_client de Python pueden imitar Chrome JA4. Los suplantadores seguirán siendo una pequeña minoría del tráfico de raspadores en 2026, y una vez que la identificación de un suplantador se hace pública, la clasifica como cualquier otra huella digital. JA4 aumenta el costo de un encabezado HTTP a una biblioteca TLS bifurcada; ese costo es suficiente para disuadir a la larga cola.
¿Cómo consigo la huella digital en el borde?
Cloudflare expone ja4 en el objeto de solicitud a través de cf.botManagement y en los trabajadores a través de request.cf.tlsClientHelloLength más ja4. Fastly lo expone a través de fastly.tls. AWS CloudFront aún no lo expone directamente; enrute a través de un CF Worker o use el punto final botoi /v1/tls/fingerprint con el cliente sin formato Hello.

Empieza a construir con botoi

150+ endpoints de API para consultas, procesamiento de texto, generacion de imagenes y utilidades para desarrolladores. Plan gratuito, sin tarjeta de credito.