CAPSOLVER
Blog
Resolvendo reCAPTCHA usando Python, Java e C++ Quando comecei a trabalhar com reCAPTCHA, achei que era uma faca de dois gumes. Por um lado, é ótimo para filtrar bots, mas por outro, pode ser um grande obstáculo para projetos de automação legítimos. Foi aí que descobri o CapSolver, uma ferramenta poderosa que simplifica a resolução de desafios reCAPTCHA. Se você está programando em Python, Java ou C++, integrar o CapSolver em seu fluxo de trabalho pode economizar tempo e esforço, tornando suas tarefas automatizadas mais confiáveis. Veja como implementá-lo em todas essas linguagens, passo a passo.

Resolvendo reCAPTCHA usando Python, Java e C++

Logo of CapSolver

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.

  1. 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.

  2. 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.

  3. 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.

  1. reCAPTCHA v2 Demo
    Visualizar demonstração do reCAPTCHA v2
  2. reCAPTCHA v3 Demo
    Visualizar demonstração do reCAPTCHA v3
  3. 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 Copy
# 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 Copy
# 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ós k= é 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 Copy
pip install requests

Etapa 3: Código de exemplo

python Copy
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:

  1. cpr: Uma biblioteca HTTP C++.
  2. jsoncpp: Uma biblioteca C++ para análise JSON.

Você pode instalar essas bibliotecas usando vcpkg:

bash Copy
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 Copy
#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.

  1. createTask: Esta função cria uma tarefa do reCAPTCHA.
  2. getTaskResult: Esta função recupera o resultado da tarefa criada.

Aqui está o código completo:

cpp Copy
#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 solucionador de reCAPTCHA v2 e v3 durante a raspagem da web em 2025
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.

reCAPTCHA
Logo of CapSolver

Adélia Cruz

17-Jan-2025

Resolvendo o reCAPTCHA com Reconhecimento de IA em 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.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

11-Nov-2024

Resolvendo reCAPTCHA Usando Python, Java e C++
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!

reCAPTCHA
Logo of CapSolver

Adélia Cruz

25-Oct-2024

Como Resolver o reCAPTCHA v2 com Rust
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.

reCAPTCHA
Logo of CapSolver

Adélia Cruz

17-Oct-2024

Guia para Resolver reCAPTCHA v3 com Pontuações Altas em Python
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.

reCAPTCHA
Logo of CapSolver

Adélia Cruz

17-Sep-2024

Resolvendo Desafios do reCAPTCHA v3 Enterprise com Python e Selenium
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.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

04-Sep-2024