Back to blog. Article language: BN EN ES FR HI ID PT RU UR VI ZH

Fingerprinting TLS e JA3: como afeta o scraping

O fingerprinting TLS identifica um cliente HTTP pela estrutura do seu handshake TLS, antes que qualquer dado de aplicação seja transmitido. JA3 e JA4 transformam os campos da mensagem ClientHello em um hash curto, e os sistemas anti-bot comparam esse hash com assinaturas conhecidas de navegadores e bots. Uma divergência entre o navegador declarado e o hash pode fazer uma solicitação ser rejeitada antes mesmo de os cabeçalhos serem lidos.

Legenda usada em todas as tabelas abaixo: ✅ documentado pelo fornecedor · ❌ não oferecido ou não documentado · ⚠️ documentado com limitações · 💡 dica prática. Nenhuma outra marca é usada nesta página.

O que é uma fingerprint TLS

Uma fingerprint TLS é uma assinatura curta construída a partir dos campos que um cliente HTTP envia em sua mensagem client hello durante o handshake tls, antes mesmo de a criptografia começar. Entender o que é JA3 começa aqui: o JA3 lê cinco desses campos e os transforma em um único hash. Cada cliente, seja Chrome, curl ou um script Python, lista conjuntos de cifras, extensões e curvas elípticas em sua própria ordem particular. Os servidores leem esses dados em texto puro, já que nenhum dos lados ainda combinou as chaves de criptografia.

O client hello também carrega uma extensão alpn, que informa ao servidor se a conexão prefere HTTP/1.1 ou HTTP/2. Bibliotecas diferentes montam esses campos de maneiras diferentes, dependendo da stack TLS subjacente, OpenSSL versus BoringSSL versus NSS, por exemplo. Esse é o material bruto do qual tanto o JA3 quanto o JA4 partem.

💡 Dica: se duas solicitações carregam a mesma fingerprint, mas com navegadores declarados diferentes, essa inconsistência sozinha já pode levantar suspeita, sem nenhuma manipulação de cabeçalhos envolvida.

Como o JA3 e o JA4 são calculados

Uma fingerprint JA3 é calculada concatenando cinco campos do ClientHello em uma única string e aplicando a ela um hash MD5, produzindo uma assinatura de 32 caracteres (Scrapfly, Guia de TLS Fingerprinting JA3/JA4, 2026). John Althouse, Jeff Atkinson e Josh Atkins publicaram o método original na Salesforce em 2017, e ele ainda forma a espinha dorsal da maioria das verificações de bots baseadas em TLS hoje. Os cinco campos que alimentam esse hash são a versão do TLS, os conjuntos de cifras, as extensões, as curvas elípticas e os formatos de ponto, unidos em uma ordem fixa.

  1. Extrair a versão do TLS, expressa como um número decimal, como 771 para TLS 1.2.
  2. Listar os conjuntos de cifras exatamente na ordem em que o cliente os enviou, separados por hífens.
  3. Listar as extensões TLS na ordem de envio, separadas por hífens, ignorando os valores GREASE.
  4. Anexar as curvas elípticas e os formatos de ponto suportados.
  5. Unir os cinco campos com vírgulas e aplicar um hash MD5 à string resultante para obter o hash ja3.
Diagrama mostrando como um hash JA3 é construído a partir dos campos do ClientHello

Como um hash JA3 é construído a partir do ClientHello

O método mais novo elimina o problema de ordenação da etapa 3. Em vez de registrar as extensões na ordem em que foram enviadas, ele as ordena por valor hexadecimal, o que mantém a fingerprint JA4 estável mesmo depois que os navegadores começaram a randomizar a ordem das extensões em 2023 (Scrapfly, 2026). Esse hash sucessor também abandona o MD5 por um SHA-256 truncado e adiciona suporte a ALPN e QUIC, detalhes que o JA3 nunca capturou.

Critério JA3 Método sucessor
Algoritmo de hash MD5 SHA-256 truncado
Ordem das extensões Como enviadas Ordenadas por valor hexadecimal
Suporte a QUIC/HTTP3 ❌ não oferecido ✅ documentado
ALPN incluído ❌ não oferecido ✅ documentado
Criado em 2017, Salesforce 2023, FoxIO

Essas diferenças estruturais importam para qualquer pessoa que esteja testando o próprio cliente. Uma fingerprint calculada de uma maneira não vai corresponder a um banco de dados construído para o outro método.

Por que proxies sozinhos não resolvem o fingerprinting

Proxies mudam o endereço IP de origem de uma solicitação; eles não tocam no handshake tls de forma alguma, então o fingerprinting TLS ainda enxerga qualquer biblioteca que iniciou a conexão. O handshake acontece diretamente entre o cliente e o servidor de destino, e um proxy HTTPS padrão usando o método CONNECT apenas faz o túnel dos bytes criptografados sem tocá-los (Shifter, glossário de TLS fingerprint, 2026). Isso significa que um IP residencial limpo emparelhado com um cliente Python padrão ainda entrega uma fingerprint que lê como script, não como navegador.

Em nosso teste, agosto de 2026, uma sessão requests padrão roteada por três tipos diferentes de proxy retornou o hash idêntico todas as vezes, independentemente da reputação do IP ou da geografia. Apenas a troca da biblioteca TLS subjacente mudou o resultado. Esta é a parte honesta da conversa: qualidade de IP e correspondência de fingerprint resolvem dois problemas separados, e tratar um como solução para o outro leva à decepção rapidamente.

"O fingerprinting TLS acontece antes de o primeiro byte HTTP chegar. Trocar um endereço IP não faz nada com o handshake por baixo dele." - Notas de engenharia da Insocks, agosto de 2026

  • ❌ Um IP residencial não reescreve a ordem dos conjuntos de cifras.
  • ❌ Rotacionar proxies não altera os campos do handshake TLS.
Diagrama comparando o que um proxy muda versus o que deixa intacto

O que um proxy muda e o que deixa intacto

  • ✅ A correspondência com a stack TLS de um navegador real é o que realmente muda a fingerprint.

Como os sistemas anti-bot usam fingerprints TLS

Sistemas anti-bot calculam um hash de cada ClientHello recebido e o comparam com bancos de dados de fingerprints conhecidas de navegadores e bots, depois combinam esse sinal com outras camadas antes de decidir por bloqueio, desafio ou liberação. O fingerprinting TLS fica totalmente abaixo dos cabeçalhos HTTP, e é por isso que cabeçalhos perfeitos com uma stack TLS roteirizada ainda são marcados. A Cloudflare documenta os campos JA3 e JA4 dentro de seu produto de bot management, e outros fornecedores executam verificações comparáveis (Scrapfly, 2026). A pontuação combina sinais TLS com o tempo das solicitações, a reputação do IP e dados comportamentais, em vez de depender de um único campo.

Alguns fornecedores adicionam fingerprinting http2 sobre a verificação do handshake, lendo como um cliente negocia prioridades de fluxo e tamanhos de janela assim que a camada TLS termina. Essa segunda camada alimenta a pontuação mais ampla de detecção anti bot junto com o hash JA3 e JA4. Os fornecedores mantêm esses bancos de dados atualizados conforme novas versões de navegadores são lançadas, e uma fingerprint que passou no último trimestre pode começar a falhar depois que uma atualização de navegador muda seus padrões.

Sinal O que revela Ação típica
Divergência de hash JA3 vs User-Agent O navegador declarado não corresponde à stack TLS ⚠️ documentado com limitações, frequentemente um desafio
Hash estático entre sessões O mesmo script reutilizado repetidamente ⚠️ documentado com limitações, limitação de taxa
Correspondência em banco de dados de bots conhecidos Fingerprint ligada a um padrão de biblioteca comum ❌ não oferecido, frequentemente bloqueado de imediato
Perfil consistente semelhante ao de um navegador Corresponde ao comportamento esperado de um navegador ✅ documentado, normalmente passa

Consistência entre camadas: TLS, HTTP/2, cabeçalhos e IP

Consistência entre camadas significa que o handshake tls, o frame de configurações http2, o User-Agent declarado e o tipo de rede do IP precisam apontar para a mesma história, um navegador real ou um cliente real, não uma colcha de retalhos de sinais desencontrados. O fingerprinting Http2 observa como um cliente negocia prioridades de fluxo e tamanhos de janela depois que o handshake termina, e é uma segunda camada que alguns fornecedores anti-bot verificam junto com os dados de JA3 e JA4 (Scrapfly, 2026). Um scraper que corrige sua stack TLS, mas ignora as configurações de HTTP/2, ainda deixa uma lacuna óbvia.

Diagrama de quatro camadas de uma solicitação e o que cada uma revela

Quatro camadas que uma solicitação expõe e o que cada uma revela

A consistência do user agent também importa, já que uma string User-Agent declarando Chrome 124 emparelhada com um perfil de fingerprint JA4 desatualizado lê como uma contradição por si só. Fornecedores anti-bot marcam exatamente esse tipo de divergência, mesmo quando cada cabeçalho individual parece correto. Nenhuma dessas verificações exige burlar nada no site de destino; elas apenas confirmam que os sinais do próprio cliente concordam entre si antes de uma solicitação sair.

Camada O que precisa corresponder Como verificar
Handshake TLS Ordem dos conjuntos de cifras e extensões para o navegador declarado Comparar o hash JA3/JA4 com uma amostra de navegador conhecido
Frame de configurações HTTP/2 Tamanho de janela, tamanho da tabela de cabeçalhos, prioridade de fluxo Inspecionar os valores dos frames contra os padrões do navegador
Cabeçalhos User-Agent, Accept-Language, Sec-CH-UA, se presente Revisão manual ou uma ferramenta de inspeção de cabeçalhos
IP/rede Tipo de ASN corresponde ao cliente declarado, residencial vs datacenter Verificar a reputação do IP e a consulta de ASN

Como testar sua própria fingerprint TLS

Testar uma fingerprint começa com uma solicitação limpa a um endpoint de verificação, depois uma comparação lado a lado com um navegador real acessando o mesmo endpoint. Uma fingerprint JA4 agrupa versão do TLS, contagem de cifras, contagem de extensões e o primeiro valor ALPN em uma string legível, o que torna a comparação visual mais fácil do que ler um hash bruto (Scrapfly, ferramenta de fingerprint JA3/JA4, 2026). Executar o mesmo teste duas vezes em dias diferentes também ajuda a confirmar que o resultado permanece estável entre atualizações de bibliotecas.

Ferramentas construídas para isso, incluindo o próprio verificador da Scrapfly e bibliotecas de terceiros como curl impersonate, um nome de ferramenta usado aqui apenas para identificação, existem especificamente para tornar essa comparação possível sem adivinhação. Um navegador headless executando Playwright ou Puppeteer também oferece um handshake genuíno para comparação, já que ele inicia um motor de navegador real em vez de uma stack TLS roteirizada.

  • Etapa 1. Envie uma solicitação do cliente em análise para um endpoint de teste de fingerprint e registre o hash que ele retorna.
  • Etapa 2. Abra o mesmo endpoint em um navegador real e atual e anote seu próprio hash para comparação.
  • Etapa 3. Compare conjuntos de cifras, contagens de extensões e o valor ALPN lado a lado, em vez de julgar apenas pela correspondência de hash.
  • Etapa 4. Verifique se o cabeçalho User-Agent declarado está alinhado com o perfil TLS realmente observado.
  • Etapa 5. Registre o resultado com uma data, já que o hash pode mudar após uma atualização de biblioteca ou navegador.

👉 Quer ver como um cliente configurado adequadamente se comporta de ponta a ponta?  Teste uma demo com a Insocks antes de executar um lote completo de testes.

Práticas white-hat para coleta de dados estável

A coleta de dados white-hat começa com as próprias regras do site de destino: APIs oficiais primeiro, robots.txt respeitado e taxas de solicitação mantidas bem abaixo de qualquer coisa que possa sobrecarregar um servidor. Revisitar o que é JA3 ajuda a explicar por que motores de navegador completos, e não truques de cabeçalho, tendem a produzir os resultados mais estáveis, já que a stack TLS de um navegador real já corresponde por padrão à própria identidade declarada. Playwright, Puppeteer e Selenium iniciam motores de navegador genuínos, então seus handshakes parecem Chrome ou Firefox sem nenhuma configuração extra (Scrapfly, 2026).

Algumas equipes recorrem ao curl impersonate ou a bibliotecas semelhantes quando um navegador completo é pesado demais para a tarefa em questão, e essa é uma troca razoável, desde que a fingerprint resultante seja testada primeiro contra um navegador real. Combinar qualquer uma das abordagens com temporização sensata e um User-Agent claro mantém um processo de coleta previsível e fácil de auditar depois.

  • ✅ Use APIs oficiais e endpoints documentados onde quer que existam.
  • ✅ Respeite o robots.txt e os termos publicados do site de destino.
  • ✅ Espaçe as solicitações em vez de disparar rajadas contra um endpoint.
  • ✅ Prefira a automação completa de navegador ao spoofing pontual de cabeçalhos ou TLS.
  • 💡 Um cronograma de coleta mais lento e constante geralmente causa menos tíquetes de suporte do que um rápido e em rajadas.

Ao usar essa abordagem a partir dos Estados Unidos, uma equipe confirma que seu processo de coleta permanece dentro da legislação americana vigente e dos próprios termos de serviço do site de destino.

Erros comuns

Alguns erros de processo aparecem repetidamente quando as equipes verificam a própria configuração. Testar uma vez e nunca repetir a verificação após uma atualização de biblioteca é o mais comum, já que os resultados do fingerprinting TLS podem mudar no momento em que uma dependência atualiza seu backend TLS. Executar o teste em um ambiente de staging que não corresponde ao de produção é outro, porque o caminho real da solicitação é o que importa, não um shell local.

  • ❌ Testar uma vez e assumir que o resultado permanece válido para sempre.
  • ❌ Verificar fingerprints em um ambiente diferente daquele em que a tarefa realmente executa.
  • ❌ Confiar em um único serviço de verificação sem um segundo ponto de comparação.
  • ❌ Ignorar as configurações de HTTP/2 enquanto persegue apenas a camada TLS.

Como a qualidade do proxy se encaixa no quadro

Divulgação: a Insocks é o nosso serviço, e esta seção descreve o que a infraestrutura de proxy realmente faz dentro de uma stack de coleta mais ampla. Uma boa infraestrutura de proxy resolve problemas da camada de IP: geografia, reputação de IP e estabilidade de conexão, enquanto o fingerprinting TLS permanece uma camada separada que um proxy sozinho não pode tocar. Uptime confiável e pools de IP limpos importam para evitar limites de taxa baseados em IP, mas eles não dizem nada sobre a ordem dos conjuntos de cifras ou as listas de extensões dentro de um handshake.

Para trabalho de coleta, vendemos proxies residenciais e proxies de IP estático, ambos com suporte de protocolo documentado e dados de localização. Combinar uma infraestrutura de proxy sólida com um cliente configurado adequadamente, seja um motor de navegador completo ou uma biblioteca cuidadosamente correspondida, resolve as duas camadas de uma vez, em vez de deixar uma exposta.

Recurso O que significa na prática
Pools de IP residenciais e ISP Reduz marcações de reputação baseadas em IP, não toca no TLS
Segmentação geográfica Alinha a origem da solicitação ao mercado pretendido
Controle de sessão Mantém o IP consistente ao longo de um fluxo de várias etapas
Uptime e suporte Reduz falhas de conexão não relacionadas ao fingerprinting

Proxies cuidam da camada de rede, não da fingerprint TLS, e qualquer provedor que sugira o contrário está exagerando o que uma mudança de IP pode fazer. Equipes que precisam das duas camadas resolvidas tipicamente emparelham uma infraestrutura de proxy de qualidade, como os proxies residenciais e proxies ISP da Insocks, com um cliente baseado em navegador ou devidamente correspondido.

🔗 Registre-se para ter acesso completo e comparar pools de proxies antes de assumir um plano.

Principais conclusões

  • O handshake tls é lido antes de qualquer cabeçalho HTTP, e essa é toda a base deste método de detecção.
  • O hash sucessor do JA3 permanece estável mesmo depois que a ordem das extensões é randomizada, ao contrário de seu predecessor.
  • Entender o que é JA3 esclarece por que clientes semelhantes a navegadores passam pelas verificações com mais consistência do que os roteirizados.
  • Proxies resolvem problemas de IP; eles nunca reescrevem um handshake tls por conta própria.
  • A automação completa de navegador continua sendo o caminho mais confiável para uma fingerprint JA3 consistente e semelhante à de um navegador.

Divulgação e fontes de dados

Todos os dados deste artigo, incluindo preços, níveis de tarifas, limites e disponibilidade de produtos, estão corretos até a data de publicação exibida nesta página. Os termos dos fornecedores mudam com frequência e sem aviso, os níveis de entrada variam com o volume, e preços promocionais podem valer no dia em que você ler isto. Nada aqui é uma oferta, uma garantia de termos atuais ou uma recomendação de compra.

Este artigo é publicado pela Insocks. Vendemos proxies e divulgamos um interesse comercial na seção final acima. Proxies não mudam uma fingerprint JA3 ou qualquer outro sinal TLS, e dizemos isso diretamente em vez de sugerir o contrário. Ferramentas de teste e bibliotecas mencionadas aqui, incluindo o verificador da Scrapfly, curl-impersonate e frameworks de automação de navegador, pertencem aos seus respectivos proprietários e aparecem apenas para identificação. Os detalhes deste artigo foram verificados em agosto de 2026, e o comportamento do cliente pode mudar entre versões de bibliotecas ou navegadores.

Perguntas frequentes

As perguntas abaixo cobrem o básico que as pessoas geralmente perguntam depois de ler sobre este tópico pela primeira vez. As respostas permanecem curtas e factuais, correspondendo ao que uma aba de navegador ou uma ferramenta de linha de comando realmente mostraria. Nada disso serve como guia de bypass, já que o objetivo aqui é entender, não evadir.

O que é uma fingerprint TLS?

Uma assinatura curta construída a partir dos dados do handshake que identifica qual software fez uma conexão.

Como um hash JA3 é calculado?

Cinco campos do handshake são combinados e transformados em hash em uma string de 32 caracteres.

Qual é a diferença entre JA3 e JA4?

O método mais novo ordena as extensões e usa um hash mais forte, permanecendo estável depois que os navegadores randomizam a ordem.

Um proxy residencial pode esconder minha fingerprint TLS?

Não, um proxy apenas muda o endereço IP; o handshake passa inalterado.

Por que meu scraper é bloqueado com cabeçalhos corretos?

Os cabeçalhos são carregados depois do handshake, então um perfil de cliente desencontrado é marcado primeiro.

Como verifico minha própria fingerprint TLS?

Envie uma solicitação para uma ferramenta de verificação pública e compare com o resultado de um navegador real.

2026-09-03