Si realizas scraping con Node.js usando undici, axios o node-fetch, los sistemas anti-bot a menudo pueden bloquearte incluso cuando tu User-Agent se ve exactamente como Chrome. La razón no es el encabezado: es la huella digital TLS y HTTP/2 emitida durante el apretón de manos.
Qué se filtra en un cliente Node típico
Captura una sesión real de Chrome en tls.peet.ws y compárala con la pila predeterminada de Node. Chrome en macOS a menudo muestra valores como:
- JA4 como
t13d1516h2_8daaf6152771_d8a2da3f94cd(ver especificación JA4+) - Configuraciones HTTP/2 de Akamai en el orden de Chrome con
WINDOW_UPDATE +15663105 - ALPS, GREASE y claves compartidas híbridas
X25519MLKEM768
La pila TLS nativa de Node ordena los cifrados según los valores predeterminados de OpenSSL, omite GREASE y envía las configuraciones HTTP/2 en una forma diferente. Los gestores de bots (Cloudflare, Akamai, DataDome, PerimeterX) identifican esta huella digital antes de tu primer byte HTTP.
hellojs: TLS con forma de Chrome desde Node
@unreleased/hellojs es un cliente HTTP de Node que reconstruye el apretón de manos en la red para coincidir con Chrome 147 en macOS: JA4, H2 de Akamai, ALPN y orden de encabezados predeterminado. También soporta:
- Clonar capturas desde tls.peet.ws mediante
profiles.registerFromPeet() - HTTP/3 mediante actualización Alt-Svc
- Proxies SOCKS5 y HTTP CONNECT
No se ejecuta en el navegador: úsalo en tu entorno de ejecución de scraper, no en código front-end.
Para la suplantación de TLS en otros entornos de ejecución, consulta curl-impersonate (Python/C) o uTLS (Go).
Inspecciona huellas digitales sin adivinar
Usa estas herramientas gratuitas de la caja de herramientas de Piloterr (solo navegador):
- Analizador de Capturas TLS: pega JSON desde tls.peet.ws
/api/all - Decodificador JA4: divide una cadena JA4 en versión TLS, ALPN y partes hash
- Decodificador HTTP/2 Akamai: decodifica cadenas de huellas digitales H2 de Akamai
- Recursos de Huella Digital: sitios de prueba, bibliotecas y herramientas de la caja de herramientas de Piloterr
Cuando la imitación de TLS no es suficiente
La huella digital TLS es solo una capa. Los sitios también verifican señales de tiempo de ejecución del navegador (canvas, WebGL, navigator.webdriver), reputación de IP y comportamiento. Para el scraping a escala de producción, combina:
- TLS/H2 realistas: clientes de suplantación dedicados (curl-impersonate, uTLS, reqwest-impersonate, etc.), o artículos de Piloterr sobre hellojs y wreq
- Encabezados consistentes: Constructor de Encabezados de Solicitud de Chrome
- Proxies gestionados y automatización de navegadores cuando sea necesario: API de Web Scraping de Piloterr