Ir para o conteúdo principal
Piloterr
Voltar ao blog
21 de junho de 2026

hellojs vs undici: por que seu scraper Node é bloqueado no JA4

Se você faz scraping com Node.js usando undici, axios ou node-fetch, sistemas anti-bot podem frequentemente bloqueá-lo mesmo quando seu User-Agent parece exatamente com o do Chrome. O motivo não é o cabeçalho: é a impressão digital TLS e HTTP/2 emitida durante o handshake.

O que vaza em um cliente Node típico

Capture uma sessão real do Chrome em tls.peet.ws e compare-a com a pilha padrão do Node. O Chrome no macOS frequentemente mostra valores como:

  • JA4 como t13d1516h2_8daaf6152771_d8a2da3f94cd (veja especificação JA4+)
  • Configurações HTTP/2 Akamai na ordem do Chrome com WINDOW_UPDATE +15663105
  • ALPS, GREASE e compartilhamentos de chaves híbridas X25519MLKEM768

A pilha TLS nativa do Node ordena cifras para os padrões do OpenSSL, ignora GREASE e envia SETTINGS HTTP/2 em uma forma diferente. Gerenciadores de bots (Cloudflare, Akamai, DataDome, PerimeterX) identificam essa impressão digital antes do seu primeiro byte HTTP.

hellojs: TLS no formato do Chrome a partir do Node

@unreleased/hellojs é um cliente HTTP Node que reconstrói o handshake on-the-wire para corresponder ao Chrome 147 no macOS: JA4, H2 Akamai, ALPN e ordenação padrão de cabeçalhos. Ele também suporta:

  • Clonar capturas de tls.peet.ws via profiles.registerFromPeet()
  • HTTP/3 via upgrade Alt-Svc
  • Proxies SOCKS5 e HTTP CONNECT

Ele não é executado no navegador: use-o no seu runtime de scraper, não no código front-end.

Para impersonação TLS em outros runtimes, veja curl-impersonate (Python/C) ou uTLS (Go).

Inspecione impressões digitais sem adivinhar

Use essas ferramentas gratuitas da caixa de ferramentas do Piloterr (apenas navegador):

Quando a mímica TLS não é suficiente

A impressão digital TLS é apenas uma camada. Os sites também verificam sinais do runtime do navegador (canvas, WebGL, navigator.webdriver), reputação do IP e comportamento. Para scraping em produção em escala, combine:

  1. TLS/H2 realista: clientes de impersonação dedicados (curl-impersonate, uTLS, reqwest-impersonate, etc.), ou artigos do Piloterr sobre hellojs e wreq
  2. Cabeçalhos consistentes: Chrome Request Headers Builder
  3. Proxies gerenciados e automação de navegador quando necessário: Piloterr Web Scraping API

Leitura adicional

Mais para ler

Guias e notícias sobre web scraping, proxies e extração de dados.

Fingerprint

RNet: Cliente HTTP Python Ultra-Rápido com TLS Fingerprinting Avançado

RNet: Cliente HTTP Python ultra-rápido com TLS fingerprinting avançado e emulação de navegador. Contorne sistemas anti-bot com desempenho impulsionado por Rust.

Josselin Liebe
Josselin Liebe
Ler
Fingerprint

Wreq: Cliente HTTP em Rust para Emulação de Navegador e Fingerprinting TLS

Descubra o Wreq, o cliente HTTP em Rust definitivo para emulação de navegador e fingerprinting TLS. Contorne sistemas anti-bot com exemplos práticos de web scraping.

Josselin Liebe
Josselin Liebe
Ler
Fingerprint

O que é TLS Fingerprinting?

Um sistema de segurança chamado Transport Layer Security (TLS) criptografa todo o tráfego da internet para melhorar a segurança online. Para garantir a comunicação baseada na web entre um cliente e um servidor, são utilizados métodos criptográficos. O TLS handshake refere-se ao procedimento de iniciar uma sessão de comunicação usando TLS.

Josselin Liebe
Josselin Liebe
Ler

Pronto para começar?

Sua API de web scraping está a um clique. Comece com +500 créditos, sem infraestrutura para configurar, sem proxies para gerenciar e sem cartão de crédito necessário.

  • +500 créditos
  • Sem cartão de crédito
  • Todos os endpoints incluídos