Resolvendo reCAPTCHA usando Python, Java e C++

Adélia Cruz
Neural Network Developer
25-Oct-2024

Quando comecei a trabalhar com reCAPTCHA, descobri que era uma faca de dois gumes. Por um lado, é ótimo para filtrar bots, mas por outro, pode ser um obstáculo para projetos de automação legítimos. Então, neste artigo, vou guiá-lo na resolução do reCAPTCHA usando três linguagens de programação poderosas: Python, Java e C++. Cada linguagem oferece suas próprias vantagens para lidar com desafios do reCAPTCHA, oferecendo flexibilidade de acordo com as necessidades do seu projeto. Começaremos entendendo o que são CAPTCHA e reCAPTCHA, juntamente com sua importância na segurança da web.
O que é CAPTCHA?
Vamos começar com o conceito mais básico: o que é CAPTCHA, ou "Teste Público de Turing Completamente Automatizado para Distinguir Computadores e Humanos", que é um método comum para diferenciar usuários humanos de bots. Ele ajuda os sites a evitar ataques automatizados, spam ou exploração, exigindo que os usuários resolvam tarefas que são fáceis para humanos, mas difíceis para máquinas. Isso pode ser reconhecer texto distorcido, selecionar imagens com objetos específicos ou resolver quebra-cabeças lógicos.
O que é reCAPTCHA?
reCAPTCHA é um serviço desenvolvido pelo Google que ajuda a proteger os sites de spam e abuso, distinguindo usuários humanos de bots. Ele evoluiu ao longo do tempo para diferentes versões, cada uma oferecendo capacidades específicas.
-
reCAPTCHA v2: Esta é a forma mais comum onde os usuários resolvem tarefas como clicar em caixas de seleção ("Não sou um robô") ou selecionar imagens. É mais amigável, mas ainda pode exibir um desafio com base em fatores de risco.
-
reCAPTCHA v3: Esta versão é executada invisivelmente em segundo plano, sem interromper os usuários. Ele atribui pontuações de risco (0,0 a 1,0) com base no comportamento do usuário. Os usuários de baixo risco passam sem ver um desafio, enquanto a atividade suspeita pode acionar etapas de verificação.
-
reCAPTCHA Enterprise: Projetado para proteção de nível empresarial, esta versão oferece recursos de segurança aprimorados para grandes empresas. Ele fornece análise avançada, modelos de aprendizado de máquina e avaliação de risco baseada em risco adaptada a transações de alto risco, com maior personalização para atender às necessidades de segurança do negócio.
Cada uma dessas versões visa fornecer segurança ideal, ao mesmo tempo em que minimiza o atrito para usuários legítimos, adaptando-se à crescente sofisticação de bots e ataques.
- reCAPTCHA v2 Demo
Visualizar demonstração do reCAPTCHA v2- reCAPTCHA v3 Demo
Visualizar demonstração do reCAPTCHA v3- reCAPTCHA Enterprise Demo
Saiba mais sobre o reCAPTCHA Enterprise
Resolvendo reCAPTCHA em Python, Java e C++
Cada linguagem oferece pontos fortes exclusivos quando se trata de lidar com desafios do reCAPTCHA:
-
Python é conhecido por sua simplicidade e grande conjunto de bibliotecas que facilitam a automação da web e a coleta de dados. Usando bibliotecas como Selenium e Playwright, você pode facilmente automatizar tarefas do navegador e contornar o CAPTCHA com as ferramentas adequadas.
-
Java é ótimo para aplicativos de nível empresarial e projetos multiplataforma. Seus recursos de multithreading e frameworks como Selenium WebDriver permitem um tratamento suave do reCAPTCHA em sistemas escaláveis.
-
C++ oferece vantagens de desempenho, tornando-o ideal para sistemas que exigem velocidade e baixa latência. Embora seja menos usado para automação, ele pode ser integrado a outras ferramentas para resolver desafios do reCAPTCHA em ambientes de alto desempenho.
Apresentando o CapSolver
À medida que você avança, perceberá que resolver desafios do reCAPTCHA pode se tornar complicado devido à evolução dos algoritmos e complexidades. É aí que o CapSolver entra em ação. É um serviço especializado que automatiza o processo de resolução do reCAPTCHA com alta precisão, lidando com vários tipos de CAPTCHA, incluindo reCAPTCHA v2, reCAPTCHA v3 e muito mais. Integrando o CapSolver em seu projeto Python, Java ou C++, você pode transferir a complexidade de resolver CAPTCHA para um serviço dedicado, permitindo que seus scripts sejam executados sem problemas e com eficiência.
Em seguida, veremos o código de amostra para cada linguagem e como você pode integrar rapidamente o CapSolver em seu projeto...
Código bônus
Reivindique seu Código 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
Como Resolver reCAPTCHA Usando Python
Pré-requisitos
Etapa 1. Obtenha a chave do site
Para V2 e V3, você pode procurar a solicitação /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf
nos logs de solicitação do navegador, onde k=
é o valor da chave de que precisamos
Etapa 2. Diferenciar entre V2 e V3
V2 e V3 têm métodos de tratamento diferentes. V2 requer reconhecimento de imagem para selecionar respostas, enquanto V3 é relativamente discreto; No entanto, V3 exige fornecer uma Ação durante a verificação. Com base no valor da chave obtido anteriormente, procure na página de resposta e você encontrará o valor da Ação na página

Etapa 3. Chame o serviço CapSolver
Distinguindo as versões do reCAPTCHA
- Nos logs de solicitação do navegador, você pode ver que para V2, após a solicitação
/recaptcha/api2/reload
, geralmente é necessária uma solicitação/recaptcha/api2/userverify
para obter o token de passagem; - Para V3, a solicitação
/recaptcha/api2/reload
pode obter o token de passagem diretamente
Exemplo completo de chamada da API do CapSolver
- Python reCAPTCHA V2
python
# pip install requests
import requests
import time
# TODO: definir sua configuração
api_key = "YOUR_API_KEY" # sua chave de API do capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # chave do site do seu site de destino
site_url = "https://www.google.com/recaptcha/api2/demo" # URL da página do seu site de destino
# site_key = "6LelzS8UAAAAAGSL60ADV5rcEtK0x0lRsHmrtm62"
# site_url = "https://mybaragar.com/index.cfm?event=page.SchoolLocatorPublic&DistrictCode=BC45"
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Falha ao criar tarefa:", res.text)
return
print(f"Obteve taskId: {task_id} / Obtendo resultado...")
while True:
time.sleep(3) # atraso
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Solução falhou! resposta:", res.text)
return
token = capsolver()
print(token)
- Python reCAPTCHA V3
python
# pip install requests
import requests
import time
# TODO: definir sua configuração
api_key = "YOUR_API_KEY" # sua chave de API do capsolver
site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf" # chave do site do seu site de destino
site_url = "https://antcpt.com/score_detector/" # URL da página do seu site de destino
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV3TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"pageAction": "homepage",
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Falha ao criar tarefa:", res.text)
return
print(f"Obteve taskId: {task_id} / Obtendo resultado...")
while True:
time.sleep(1) # atraso
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Solução falhou! resposta:", res.text)
return
# verificar pontuação
def score_detector(token):
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "fr-CH,fr;q=0.9",
"content-type": "application/json",
"origin": "https://antcpt.com",
"priority": "u=1, i",
"referer": "https://antcpt.com/score_detector/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
url = "https://antcpt.com/score_detector/verify.php"
data = {
"g-recaptcha-response": token
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)
print(response.json())
print(response)
token = capsolver()
print(token)
...
...
{
'success': True,
'challenge_ts': '2024-07-19T10:50:56Z',
'hostname': 'antcpt.com',
'score': 0.7,
'action': 'homepage'
}
Como Resolver reCAPTCHA Usando Java
Pré-requisitos
Antes de mergulharmos no código, há alguns pré-requisitos que você deve ter em vigor para acompanhar este tutorial com sucesso:
- Node.js e npm: Usaremos Node.js, um ambiente de tempo de execução do JavaScript, juntamente com npm (Node Package Manager) para gerenciar as dependências do nosso projeto. Se você não tiver Node.js instalado, pode baixá-lo do site oficial do Node.js.
- Chave da API do CapSolver: Para resolver desafios do reCAPTCHA com eficácia https://www.capsolver.com/products/recaptchav2, você precisará acessar um serviço como CapSolver, que se especializa em resolver desafios do CAPTCHA programaticamente. Certifique-se de se inscrever e obter uma chave da API do CapSolver para integrá-la à sua solução.
Depois de atender a esses pré-requisitos, você está pronto para configurar seu ambiente e começar a resolver desafios do reCAPTCHA com JavaScript e CapSolver.
Etapa 1: Obtendo a Chave do Site
- Nos logs de solicitação do navegador, procure a solicitação
/recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
, onde o valor apósk=
é a Chave do Site de que precisamos. Ou você pode encontrar todos os parâmetros para resolver o recapctha por meio da extensão CapSolver - A URL é o endereço da página que aciona o reCAPTCHA V2.
Etapa 2: Instale a biblioteca requests
bash
pip install requests
Etapa 3: Código de exemplo
python
import requests
import time
from DrissionPage import ChromiumPage
# Crie uma instância de ChromiumPage
page = ChromiumPage()
# Acesse a página de exemplo que aciona o reCAPTCHA
page.get("https://www.google.com/recaptcha/api2/demo")
# TODO: Definir sua configuração
api_key = "sua chave de API do capsolver" # Sua chave da API do CapSolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # Chave do site do seu site de destino
site_url = "https://www.google.com/recaptcha/api2/demo" # URL da página do seu site de destino
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
# Envie uma solicitação ao CapSolver para criar uma tarefa
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Falha ao criar tarefa:", res.text)
return
print(f"Obteve taskId: {task_id} / Obtendo resultado...")
while True:
time.sleep(3) # Atraso
payload = {"clientKey": api_key, "taskId": task_id}
# Consultar resultados da tarefa
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Solução falhou! resposta:", res.text)
return
def check():
# Obtenha a solução do reCAPTCHA
token = capsolver()
# Definir o valor da resposta do reCAPTCHA
page.run_js(f'document.getElementById("g-recaptcha-response").value="{token}"')
# Chamar a função de retorno de chamada de sucesso
page.run_js(f'onSuccess("{token}")')
# Enviar o formulário
page.ele('x://input[@id="recaptcha-demo-submit"]').click()
if __name__ == '__main__':
check()
Como Resolver reCAPTCHA Usando C++
Pré-requisitos
Antes de começarmos, certifique-se de que você tenha as seguintes bibliotecas instaladas:
- cpr: Uma biblioteca HTTP C++.
- jsoncpp: Uma biblioteca C++ para análise JSON.
Você pode instalar essas bibliotecas usando vcpkg:
bash
vcpkg install cpr jsoncpp
Etapa 1: Configurando seu Projeto
Crie um novo projeto C++ e inclua os cabeçalhos necessários para cpr
e jsoncpp
.
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
Etapa 2: Definir Funções para Criar e Obter Resultados de Tarefa
Definiremos duas funções principais: createTask
e getTaskResult
.
- createTask: Esta função cria uma tarefa do reCAPTCHA.
- getTaskResult: Esta função recupera o resultado da tarefa criada.
Aqui está o código completo:
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
std::string createTask(const std::string& apiKey, const std::string& websiteURL, const std::string& websiteKey) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["task"]["type"] = "ReCaptchaV2Task";
requestBody["task"]["websiteURL"] = websiteURL;
requestBody["task"]["websiteKey"] = websiteKey;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/createTask"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
std::string taskId;
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["errorId"].asInt() == 0) {
taskId = responseBody["taskId"].asString();
} else {
std::cerr << "Erro: " << responseBody["errorCode"].asString() << std::endl;
}
} else {
std::cerr << "Falha ao analisar resposta: " << errs << std::endl;
}
return taskId;
}
std::string getTaskResult(const std::string& apiKey, const std::string& taskId) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["taskId"] = taskId;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
while (true) {
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/getTaskResult"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["status"].asString() == "ready") {
return responseBody["solution"]["gRecaptchaResponse"].asString();
} else if (responseBody["status"].asString() == "processing") {
std::cout << "Tarefa ainda está sendo processada, aguardando 5 segundos..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
} else {
std::cerr << "Erro: " << responseBody["errorCode"].asString() << std::endl;
break;
}
} else {
std::cerr << "Falha ao analisar resposta: " << errs << std::endl;
break;
}
}
return "";
}
int main() {
std::string apiKey = "YOUR_API_KEY";
std::string websiteURL = "https://example.com";
std::string websiteKey = "SITE_KEY";
std::string taskId = createTask(apiKey, websiteURL, websiteKey);
if (!taskId.empty()) {
std::cout << "Tarefa criada com sucesso. ID da Tarefa: " << taskId << std::endl;
std::string recaptchaResponse = getTaskResult(apiKey, taskId);
std::cout << "Resposta do reCAPTCHA: " << recaptchaResponse << std::endl;
} else {
std::cerr << "Falha ao criar tarefa." << std::endl;
}
return 0;
}
Considerações Finais
Ao finalizar, posso dizer com segurança que integrar o CapSolver aos meus projetos tornou muito mais fácil lidar com desafios do reCAPTCHA. Seja V2 ou V3, o processo é direto e me economizou muito tempo. Se você está lidando com desafios semelhantes, recomendo fortemente experimentar o CapSolver - ele foi um divisor de águas para mim.
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

Qual é o melhor resolvedor de reCAPTCHA v2 e v3 para web scraping em 2025
Em 2025, com a sofisticação crescente dos sistemas anti-bot, encontrar solucionadores de reCAPTCHA confiáveis tornou-se crítico para a extração bem-sucedida de dados.

Adélia Cruz
17-Jan-2025

Resolvendo o reCAPTCHA com Reconhecimento de IA em 2025
Explore como a IA está transformando a resolução de reCAPTCHA, as soluções da CapSolver e a paisagem em evolução da segurança CAPTCHA em 2025.

Aloísio Vítor
11-Nov-2024

Resolvendo reCAPTCHA usando Python, Java e C++
Saiba como resolver o reCAPTCHA com sucesso usando três poderosas linguagens de programação: Python, Java e C++ em um único blog? Entre!

Adélia Cruz
25-Oct-2024

Como Resolver reCAPTCHA v2 com Rust
Aprenda a resolver o reCaptcha v2 usando Rust e a API do Capsolver. Este guia abrange métodos com e sem proxy, fornecendo instruções passo a passo e exemplos de código para integrar a resolução do reCaptcha v2 em seus aplicativos Rust.

Adélia Cruz
17-Oct-2024

Guia para Resolver reCAPTCHA v3 com Pontuações Altas em Python
Este guia irá guiá-lo através de estratégias eficazes e técnicas Python para resolver o reCAPTCHA v3 com pontuações altas, garantindo que suas tarefas de automação funcionem perfeitamente.

Adélia Cruz
17-Sep-2024

Resolvendo Desafios do reCAPTCHA v3 Enterprise com Python e Selenium
Como resolver desafios reCAPTCHA v3 Enterprise usando Python e Selenium, a popular ferramenta de automação de navegador.

Aloísio Vítor
04-Sep-2024