Saltar al contenido principal
Piloterr
Volver al blog
21 de junio de 2026

hellojs vs undici: por qué tu scraper en Node es bloqueado por JA4

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):

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:

  1. TLS/H2 realistas: clientes de suplantación dedicados (curl-impersonate, uTLS, reqwest-impersonate, etc.), o artículos de Piloterr sobre hellojs y wreq
  2. Encabezados consistentes: Constructor de Encabezados de Solicitud de Chrome
  3. Proxies gestionados y automatización de navegadores cuando sea necesario: API de Web Scraping de Piloterr

Lecturas adicionales

Más para leer

Guías y noticias sobre web scraping, proxies y extracción de datos.

Fingerprint

RNet: Cliente HTTP Ultra-Rápido en Python con Huella TLS Avanzada

RNet: Cliente HTTP ultra-rápido en Python con huella TLS avanzada y emulación de navegador. Supera sistemas anti-bot con rendimiento impulsado por Rust.

Josselin Liebe
Josselin Liebe
Leer
Fingerprint

Wreq: Cliente HTTP en Rust para Emulación de Navegador y TLS Fingerprinting

Descubre Wreq, el cliente HTTP en Rust definitivo para emulación de navegador y TLS fingerprinting. Supera sistemas anti-bot con ejemplos prácticos de web scraping.

Josselin Liebe
Josselin Liebe
Leer
Fingerprint

¿Qué es el TLS fingerprinting?

Un sistema de seguridad llamado Transport Layer Security (TLS) encripta todo el tráfico de internet para mejorar la seguridad en línea. Se utilizan métodos criptográficos con el fin de asegurar la comunicación basada en web entre un cliente y un servidor. El apretón de manos TLS (TLS handshake) se refiere al procedimiento de iniciar una sesión de comunicación utilizando TLS.

Josselin Liebe
Josselin Liebe
Leer

¿Listo para empezar?

Tu API de web scraping está a un clic. Comienza con +500 créditos, sin infraestructura que configurar, sin proxies que gestionar y sin necesidad de tarjeta de crédito.

  • +500 créditos
  • Sin tarjeta de crédito
  • Todos los endpoints incluidos