CAPSOLVER
Blog
Como Resolver a Impressão Digital TLS/JA3 em Web Scraping com curl_cffi

Como Resolver Impressão Digital TLS/JA3 em Web Scraping com curl_cffi

Logo of CapSolver

Adélia Cruz

Neural Network Developer

28-Aug-2024

Está com dificuldades para lidar com medidas anti-bot durante a coleta de dados de sites? curl_cffi, uma biblioteca Python avançada que envolve a ferramenta cURL, pode ajudar a contornar essas barreiras de forma eficaz. Imitando o comportamento do navegador e aproveitando os recursos do cURL, curl_cffi aumenta a capacidade do seu coletor de dados de evitar detecção e executar sem problemas. Neste guia, exploraremos como curl_cffi funciona, como usá-lo para várias tarefas e abordaremos suas limitações. Também discutiremos soluções potenciais para superar essas limitações.

O que é curl_cffi?

curl_cffi é uma biblioteca Python projetada para solicitações de rede, semelhante a bibliotecas como requests e httpx. No entanto, ao contrário dessas bibliotecas, curl_cffi pode simular impressões digitais TLS/JA3 e HTTP/2 do navegador. curl-impersonate é uma ferramenta de linha de comando que pode simular quatro navegadores principais e realizar apertos de mão TLS e HTTP como um navegador real. curl_cffi envolve curl-impersonate em uma biblioteca Python usando cffi.

Está com dificuldades com a falha repetida em resolver completamente o captcha irritante?

Descubra a resolução automática perfeita de captcha com a tecnologia AI-powered Auto Web Unblock da CapSolver!

Reclame seu Código de bônus para as melhores soluções de captcha; CapSolver: WEBS. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, Ilimitado

O que é impressão digital TLS/JA3?

Hoje, a maioria dos sites usa HTTPS. Para estabelecer uma conexão HTTPS, um handshake TLS ocorre entre o servidor e o cliente, trocando informações como versões TLS suportadas e algoritmos de criptografia. Diferentes clientes têm características variáveis, e esses detalhes são frequentemente estáveis, permitindo que os servidores identifiquem solicitações como provenientes de navegadores de usuários típicos ou scripts automatizados. JA3 é um algoritmo comum usado para gerar impressões digitais TLS. Ele funciona concatenando essas características e calculando uma hash MD5.

Usando curl_cffi

O uso do curl_cffi é bastante semelhante ao requests. Aqui está como você pode usar o requests para obter a impressão digital JA3:

python Copy
import requests

url = "https://tls.browserleaks.com/json"
r = requests.get(url)
print(r.json())

Você pode obter resultados como este:

json Copy
{
    "user_agent": "python-requests/2.32.3",
    "ja3_hash": "8d9f7747675e24454cd9b7ed35c58707",
    "ja3_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-11-10-16-22-23-49-13-43-45-51-21,29-23-30-25-24,0-1-2",
    "ja3n_hash": "a790a1e311289ac1543f411f6ffceddf",
    "ja3n_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-10-11-13-16-21-22-23-43-45-49-51,29-23-30-25-24,0-1-2",
    "akamai_hash": "",
    "akamai_text": ""
}

Se você fizer solicitações repetidas, verá que seu hash JA3 permanece o mesmo. No entanto, a partir do Chrome versão 110, a ordem da extensão TLS ClientHello é randomizada, tornando mais fácil para os desenvolvedores de sites bloquear bibliotecas como requests com base em impressões digitais JA3. Se suas solicitações mostrarem consistentemente a mesma impressão digital JA3, elas podem ser identificadas como provenientes de um único usuário, aumentando a probabilidade de serem sinalizadas como um bot.

Aqui está como usar curl_cffi para simular uma impressão digital JA3 real:

python Copy
from curl_cffi import requests

url = "https://tls.browserleaks.com/json"
r = requests.get(url, impersonate="chrome124")
print(r.json())

O parâmetro impersonate permite especificar o navegador e a versão a serem simulados. Os navegadores suportados incluem Chrome, Chrome Android, Edge e Safari, com versões continuamente atualizadas. Para obter informações detalhadas, consulte o repositório GitHub curl_cffi. Com curl_cffi, a impressão digital JA3 será alinhada com a de um navegador real e, a partir do Chrome 110, a impressão digital JA3 mudará a cada solicitação:

json Copy
{
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "ja3_hash": "c97c8dac4ca1de968fe230de54f3e0f3",
    "ja3_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,16-10-27-18-5-51-23-17513-45-35-43-13-65281-0-11-65037,25497-29-23-24,0",
    "ja3n_hash": "4c9ce26028c11d7544da00d3f7e4f45c",
    "ja3n_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-5-10-11-13-16-18-23-27-35-43-45-51-17513-65037-65281,25497-29-23-24,0",
    "akamai_hash": "52d84b11737d980aef856699f885ca86",
    "akamai_text": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p"
}

Abordando as Limitações do curl_cffi

Embora o curl_cffi possa simular impressões digitais JA3 reais e potencialmente evitar desafios e bloqueios de bots, pode não ser sempre suficiente. Muitos sites implementam mecanismos avançados de proteção contra bots, como captcha, reCaptcha, captcha, Cloudflare Turnstile, captcha e captcha WAF. Esses sistemas usam imagens complexas e desafios JavaScript difíceis de ler para diferenciar humanos de bots. Às vezes, mesmo com uma impressão digital JA3 genuína e aleatória, contornar esses desafios é inevitável.

Se você encontrar desafios CAPTCHA, independentemente da biblioteca de solicitação que você usar, eles podem ser inevitáveis. No entanto, não há necessidade de se preocupar. O CapSolver fornece uma solução para esses problemas. O CapSolver usa tecnologia de desbloqueio da web automatizada com base em IA para resolver vários desafios de bots em segundos. Seja lidando com imagens ou problemas complexos, o CapSolver pode lidar com isso de forma eficiente. Se a solução falhar, você não incorrerá em nenhum custo.

O CapSolver também oferece uma extensão de navegador que resolve automaticamente CAPTCHAs durante a raspagem de dados com o Selenium. Além disso, uma solução de API está disponível para resolver CAPTCHAs e obter tokens em frameworks como o Scrapy. Tudo pode ser feito em apenas alguns segundos. Para mais detalhes, consulte a documentação do CapSolver.

Conclusão

Ao integrar o curl_cffi em sua configuração de raspagem da Web, você pode efetivamente imitar o comportamento real do navegador para superar os desafios de impressão digital TLS/JA3. Embora o curl_cffi forneça ferramentas robustas para lidar com esses desafios, sistemas avançados de CAPTCHA e detecção de bots ainda representam obstáculos significativos. O CapSolver oferece uma solução complementar para lidar com esses desafios CAPTCHA perfeitamente, garantindo que suas atividades de raspagem funcionem sem problemas.

Para mais informações e recursos, confira o site CapSolver e explore o repositório GitHub curl_cffi.

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais