
Aloísio Vítor
Image Processing Expert

Quando realiza web scraping, um dos obstáculos comuns que pode encontrar são desafios de CAPTCHA. Os sites costumam usar CAPTCHAs para evitar que bots acessem seu conteúdo. CAPTCHA (Teste Público de Turing Completamente Automatizado para Distinguir Computadores e Humanos) é uma técnica amplamente utilizada para garantir que o usuário seja humano, não um bot automatizado.
Neste guia, discutiremos os diferentes tipos de desafios do reCAPTCHA, como identificá-los usando ferramentas e, por fim, como resolver vários desafios do reCAPTCHA simultaneamente usando Python e threading.
WebScraping é o processo de extrair dados de sites. É frequentemente usado para tarefas como coletar preços de sites de comércio eletrônico, reunir artigos de notícias ou agregar informações de várias fontes da web. O scraping envolve fazer solicitações HTTP para um site e analisar os dados da resposta. No entanto, muitos sites usam CAPTCHAs para evitar o acesso automatizado.
reCAPTCHA V2, esse tipo de CAPTCHA é o mais usado e aparece como um desafio de "caixa de seleção" com a etiqueta "Não sou um robô". Ele pode pedir ao usuário para selecionar certas imagens para verificar se é humano.

reCAPTCHA V3 funciona em segundo plano, pontuando interações do usuário para detectar comportamento semelhante a um bot. Esse sistema foi projetado para evitar interrupções na experiência do usuário, fornecendo uma pontuação para o site, que pode ser usada para bloquear bots ou exigir etapas de verificação adicionais.
reCAPTCHA invisível é uma versão mais amigável do reCAPTCHA v2, onde o desafio só aparece se o sistema suspeita de comportamento semelhante a um bot.

Para identificar o tipo de CAPTCHA que está sendo usado em um site, você pode usar as seguintes ferramentas:
Capsolver é um serviço que permite resolver desafios de CAPTCHA programaticamente. Para detectar parâmetros de CAPTCHA:

Depois de configurar o Capsolver, siga estas etapas para detectar parâmetros de CAPTCHA:
O Capsolver Captcha Detector pode retornar informações detalhadas sobre reCAPTCHAs:

Parâmetros-chave para reCAPTCHA:
Website URLSite KeypageActionisInvisibleisEnterpriseisSRequiredisReCaptchaV3API DomainDepois que esses parâmetros forem detectados, o Capsolver retornará um objeto JSON com todos os detalhes necessários para enviar o CAPTCHA ao seu serviço.

Ao trabalhar em projetos de web scraping, resolver CAPTCHAs pode se tornar demorado, especialmente quando você precisa resolver vários CAPTCHAs simultaneamente. Aqui está como você pode automatizar a resolução de vários desafios do reCAPTCHA simultaneamente usando Python.
import capsolver
import threading
capsolver.api_key = "Sua Chave API do Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def resolver_recaptcha_v2():
solucao = capsolver.resolver({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solucao
def resolver_tarefa_recaptcha(lista_resultados, indice):
resultado = resolver_recaptcha_v2()
lista_resultados[indice] = resultado
def resolver_multiplos_recaptchas(numero_tarefas):
threads = []
resultados = [None] * numero_tarefas
for i in range(numero_tarefas):
thread = threading.Thread(target=resolver_tarefa_recaptcha, args=(resultados, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return resultados
def principal():
numero_tarefas = 10 # Número de tarefas simultâneas
print(f"Resolvendo {numero_tarefas} tarefas do reCaptcha v2 simultaneamente")
solucoes = resolver_multiplos_recaptchas(numero_tarefas)
for i, solucao in enumerate(solucoes):
print(f"Solução {i+1}: {solucao}")
if __name__ == "__main__":
principal()
O processo para resolver o reCAPTCHA v3 é bastante semelhante ao v2, mas você precisará ajustar o tipo de CAPTCHA de acordo.
```python
import capsolver
import threading
capsolver.api_key = "Sua Chave API do Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def resolver_recaptcha_v3():
solucao = capsolver.resolver({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solucao
def resolver_tarefa_recaptcha(lista_resultados, indice):
resultado = resolver_recaptcha_v3()
lista_resultados[indice] = resultado
def resolver_multiplos_recaptchas(numero_tarefas):
threads = []
resultados = [None] * numero_tarefas
for i in range(numero_tarefas):
thread = threading.Thread(target=resolver_tarefa_recaptcha, args=(resultados, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return resultados
def principal():
numero_tarefas = 10 # Número de tarefas simultâneas
print(f"Resolvendo {numero_tarefas} tarefas do reCaptcha v3 simultaneamente")
solucoes = resolver_multiplos_recaptchas(numero_tarefas)
for i, solucao in enumerate(solucoes):
print(f"Solução {i+1}: {solucao}")
if __name__ == "__main__":
principal()
O processo para resolver o reCAPTCHA v3 é bastante semelhante ao v2, mas você precisará ajustar o tipo de CAPTCHA de acordo.
```python
import capsolver
import threading
capsolver.api_key = "Sua Chave API do Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def resolver_recaptcha_v3():
solucao = capsolver.resolver({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solucao
def resolver_tarefa_recaptcha(lista_resultados, indice):
resultado = resolver_recaptcha_v3()
lista_resultados[indice] = resultado
def resolver_multiplos_recaptchas(numero_tarefas):
threads = []
resultados = [None] * numero_tarefas
for i in range(numero_tarefas):
thread = threading.Thread(target=resolver_tarefa_recaptcha, args=(resultados, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return resultados
def principal():
numero_tarefas = 10 # Número de tarefas simultâneas
print(f"Resolvendo {numero_tarefas} tarefas do reCaptcha v3 simultaneamente")
solucoes = resolver_multiplos_recaptchas(numero_tarefas)
for i, solucao in enumerate(solucoes):
print(f"Solução {i+1}: {solucao}")
if __name__ == "__main__":
principal()
import capsolver
# Considere usar variáveis de ambiente para informações confidenciais
capsolver.api_key = "Sua Chave API do Capsolver"
PAGE_URL_V2 = "PAGE_URL"
PAGE_KEY_V2 = "PAGE_SITE_KEY"
PAGE_URL_V3 = "PAGE_URL"
PAGE_KEY_V3 = "PAGE_SITE_KEY"
def resolver_recaptcha_v2(url, chave):
solucao = capsolver.resolver({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": chave,
})
return solucao
def resolver_recaptcha_v3(url, chave):
solucao = capsolver.resolver({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": url,
"websiteKey": chave,
"minScore": 0.5 # Ajuste a pontuação mínima se necessário
})
return solucao
def principal():
print("Resolvendo reCaptcha v2")
solucao_v2 = resolver_recaptcha_v2(PAGE_URL_V2, PAGE_KEY_V2)
print("Solução (v2): ", solucao_v2)
print("Resolvendo reCaptcha v3")
solucao_v3 = resolver_recaptcha_v3(PAGE_URL_V3, PAGE_KEY_V3)
print("Solução (v3): ", solucao_v3)
if __name__ == "__main__":
principal()
Reivindique seu Código Bônus para as melhores soluções de captcha; CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, Ilimitado

Para mais informações, leia este blog
Lidar com vários desafios do CAPTCHA é uma habilidade importante para qualquer pessoa que trabalha com web scraping, especialmente à medida que os sites aumentam suas medidas de segurança. Com ferramentas como o Capsolver e o poder do threading do Python, você pode automatizar eficientemente a resolução de desafios do CAPTCHA, garantindo processos de scraping mais suaves para seus projetos.
Aprenda o que causa o erro 1020 Acesso Negado do Cloudflare, como o Firewall de Aplicação Web e a detecção de bots funcionam e como os desenvolvedores podem reduzir falsos positivos em fluxos de trabalho de automação legítimos.

Aprenda como usar o modelo CapSolver n8n para monitorar páginas de produtos protegidas pelo AWS WAF, resolver desafios, extrair preços, comparar mudanças e disparar alertas automaticamente.
