CAPSOLVER
Blog
Resolver reCAPTCHA usando Python, Java y C++Cuando empecé a trabajar con reCAPTCHA, lo encontré como un arma de doble filo. Por un lado, es genial para filtrar bots, pero por otro, puede ser un obstáculo importante para proyectos de automatización legítimos. Fue entonces cuando descubrí CapSolver, una herramienta poderosa que simplifica la resolución de desafíos de reCAPTCHA. Ya sea que estés programando en Python, Java o C++, integrar CapSolver en tu flujo de trabajo puede ahorrar tiempo y esfuerzo, al mismo tiempo que hace que tus tareas automatizadas sean más confiables. Aquí te explicamos cómo puedes implementarlo en estos lenguajes, paso a paso.

Resolviendo reCAPTCHA usando Python, Java y C++

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

25-Oct-2024

¡Qué es CAPTCHA?

Empecemos con el concepto más básico: qué es CAPTCHA, o "Completely Automated Public Turing test to tell Computers and Humans Apart" (Prueba de Turing pública completamente automatizada para distinguir entre computadoras y humanos), que es un método común para diferenciar entre usuarios humanos y bots. Ayuda a los sitios web a evitar ataques automatizados, spam o explotación al exigir a los usuarios que resuelvan tareas que son fáciles para los humanos pero difíciles para las máquinas. Esto podría ser reconocer texto distorsionado, seleccionar imágenes con objetos específicos o resolver rompecabezas lógicos.

¡Qué es reCAPTCHA?

reCAPTCHA es un servicio desarrollado por Google que ayuda a proteger los sitios web del spam y el abuso al distinguir entre usuarios humanos y bots. Ha evolucionado con el tiempo en diferentes versiones, cada una ofreciendo capacidades específicas.

  1. reCAPTCHA v2: Esta es la forma más común en la que los usuarios resuelven tareas como hacer clic en casillas de verificación ("No soy un robot") o seleccionar imágenes. Es más fácil de usar, pero aún puede mostrar un desafío en función de los factores de riesgo.

  2. reCAPTCHA v3: Esta versión se ejecuta de forma invisible en segundo plano sin interrumpir a los usuarios. Asigna puntuaciones de riesgo (0.0 a 1.0) en función del comportamiento del usuario. Los usuarios de bajo riesgo pasan sin ver un desafío, mientras que la actividad sospechosa puede activar pasos de verificación.

  3. reCAPTCHA Enterprise: Diseñado para protección a nivel empresarial, esta versión ofrece características de seguridad mejoradas para grandes empresas. Proporciona análisis avanzados, modelos de aprendizaje automático y evaluación de riesgos adaptados a transacciones de alto riesgo, con mayor personalización para satisfacer las necesidades de seguridad empresarial.

Cada una de estas versiones tiene como objetivo proporcionar seguridad óptima al mismo tiempo que minimiza la fricción para los usuarios legítimos, adaptándose a la creciente sofisticación de los bots y los ataques.

  1. Demostración de reCAPTCHA v2
    Ver la demostración de reCAPTCHA v2
  2. Demostración de reCAPTCHA v3
    Ver la demostración de reCAPTCHA v3
  3. Demostración de reCAPTCHA Enterprise
    Más información sobre reCAPTCHA Enterprise

Resolver reCAPTCHA en Python, Java y C++

Cada lenguaje ofrece fortalezas únicas cuando se trata de manejar desafíos reCAPTCHA:

  • Python es conocido por su simplicidad y un gran conjunto de bibliotecas que facilitan la automatización web y el raspado de datos. Usando bibliotecas como Selenium y Playwright, puedes automatizar fácilmente las tareas del navegador y eludir CAPTCHA con las herramientas adecuadas.

  • Java es ideal para aplicaciones a nivel empresarial y proyectos multiplataforma. Sus capacidades de multihilo y marcos como Selenium WebDriver permiten un manejo suave de reCAPTCHA en sistemas escalables.

  • C++ ofrece ventajas de rendimiento, lo que lo hace ideal para sistemas que requieren velocidad y baja latencia. Aunque menos comúnmente utilizado para la automatización, puede integrarse con otras herramientas para resolver desafíos reCAPTCHA en entornos de alto rendimiento.

Presentando CapSolver

A medida que avanzas, notarás que resolver desafíos reCAPTCHA puede ser complicado debido a la evolución de los algoritmos y las complejidades. Ahí es donde entra CapSolver. Es un servicio especializado que automatiza el proceso de resolución de reCAPTCHA con alta precisión, manejando múltiples tipos de CAPTCHA, incluyendo reCAPTCHA v2, reCAPTCHA v3 y más. Al integrar CapSolver en tu proyecto Python, Java o C++, puedes descargar la complejidad de resolver CAPTCHA a un servicio dedicado, permitiendo que tus scripts se ejecuten sin problemas y de manera eficiente.

A continuación, recorreremos el código de muestra para cada lenguaje y cómo puedes integrar rápidamente CapSolver en tu proyecto ...

Código adicional

Reclama tu Código adicional para las mejores soluciones de captcha; CapSolver: WEBS. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, ilimitado

Cómo resolver reCAPTCHA usando Python

Requisitos previos

Paso 1. Obtener la clave del sitio
Para V2 y V3, puedes buscar la solicitud /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf en los registros de solicitud del navegador, donde k= es el valor de la clave que necesitamos.

Paso 2. Diferenciar entre V2 y V3

V2 y V3 tienen diferentes métodos de manejo. V2 requiere reconocimiento de imágenes para seleccionar respuestas, mientras que V3 es relativamente discreto; Sin embargo, V3 requiere proporcionar una acción durante la verificación. En función del valor de la clave obtenida previamente, busca en la página de respuesta y encontrarás el valor de la acción en la página.

Paso 3. Llamar al servicio CapSolver

Distinguir las versiones reCAPTCHA

  • En los registros de solicitud del navegador, puedes ver que para V2, después de la solicitud /recaptcha/api2/reload, generalmente se necesita una solicitud /recaptcha/api2/userverify para obtener el token de paso;
  • Para V3, la solicitud /recaptcha/api2/reload puede obtener el token de paso directamente

Ejemplo completo de llamada a la API de CapSolver

  • Python reCAPTCHA V2
python Copy
# pip install requests
import requests
import time

# TODO: set your config
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo"  # page url of your target site

# 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("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")

    while True:
        time.sleep(3)  # delay
        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("Solve failed! response:", res.text)
            return


token = capsolver()
print(token)
  • Python reCAPTCHA V3
python Copy
# pip install requests
import requests
import time

# TODO: set your config
api_key = "YOUR_API_KEY"  # your api key of capsolver

site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf"  # site key of your target site
site_url = "https://antcpt.com/score_detector/"  # page url of your target site


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("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")

    while True:
        time.sleep(1)  # delay
        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("Solve failed! response:", res.text)
            return

# verify score
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'
}

Cómo resolver reCAPTCHA usando Java

Requisitos previos

Antes de sumergirnos en el código, hay algunos requisitos previos que debes tener en cuenta para seguir este tutorial con éxito:

  • Node.js y npm: Usaremos Node.js, un entorno de ejecución de JavaScript, junto con npm (Node Package Manager) para administrar las dependencias de nuestro proyecto. Si no tienes Node.js instalado, puedes descargarlo desde el sitio web oficial de Node.js.
  • Clave de la API de CapSolver: Para resolver desafíos reCAPTCHA de manera efectiva, necesitarás acceso a un servicio como CapSolver, que se especializa en resolver desafíos CAPTCHA programáticamente. Asegúrate de registrarte y obtener una clave de API de CapSolver para integrarla en tu solución.

Una vez que hayas cumplido con estos requisitos previos, estarás listo para configurar tu entorno y comenzar a resolver desafíos reCAPTCHA con JavaScript y CapSolver.

Paso 1: Obtener la clave del sitio

  • En los registros de solicitud del navegador, busca la solicitud
    /recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-, donde el valor después de k= es la clave del sitio que necesitamos. O puedes encontrar todos los parámetros para resolver recapctha a través de la extensión CapSolver
  • La URL es la dirección de la página que activa reCAPTCHA V2.

Paso 2: Instalar la biblioteca de solicitudes

bash Copy
pip install requests

Paso 3: Código de ejemplo

python Copy
import requests
import time
from DrissionPage import ChromiumPage

# Create an instance of ChromiumPage
page = ChromiumPage()

# Access the example page that triggers reCAPTCHA
page.get("https://www.google.com/recaptcha/api2/demo")

# TODO: Set your configuration
api_key = "your api key of capsolver"  # Your CapSolver API key
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # Site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo"  # Page URL of your target site

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    # Send a request to CapSolver to create a task
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")

    while True:
        time.sleep(3)  # Delay
        payload = {"clientKey": api_key, "taskId": task_id}
        # Query task results
        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("Solve failed! response:", res.text)
            return

def check():
    # Get the reCAPTCHA solution
    token = capsolver()
    # Set the reCAPTCHA response value
    page.run_js(f'document.getElementById("g-recaptcha-response").value="{token}"')
    # Call the success callback function
    page.run_js(f'onSuccess("{token}")')
    # Submit the form
    page.ele('x://input[@id="recaptcha-demo-submit"]').click()

if __name__ == '__main__':
    check()

Cómo resolver reCAPTCHA usando C++

Requisitos previos

Antes de comenzar, asegúrate de tener las siguientes bibliotecas instaladas:

  1. cpr: Una biblioteca HTTP de C++.
  2. jsoncpp: Una biblioteca de C++ para el análisis JSON.

Puedes instalar estas usando vcpkg:

bash Copy
vcpkg install cpr jsoncpp

Paso 1: Configurar tu proyecto

Crea un nuevo proyecto de C++ e incluye los encabezados necesarios para cpr y jsoncpp.

cpp Copy
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>

Paso 2: Definir funciones para crear y obtener resultados de tareas

Definiremos dos funciones principales: createTask y getTaskResult.

  1. createTask: Esta función crea una tarea reCAPTCHA.
  2. getTaskResult: Esta función recupera el resultado de la tarea creada.

Aquí está el 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 << "Error: " << responseBody["errorCode"].asString() << std::endl;
        }
    } else {
        std::cerr << "Failed to parse response: " << 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 << "Task is still processing, waiting for 5 seconds..." << std::endl;
                std::this_thread::sleep_for(std::chrono::seconds(5));
            } else {
                std::cerr << "Error: " << responseBody["errorCode"].asString() << std::endl;
                break;
            }
        } else {
            std::cerr << "Failed to parse response: " << 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 << "Task created successfully. Task ID: " << taskId << std::endl;
        std::string recaptchaResponse = getTaskResult(apiKey, taskId);
        std::cout << "reCAPTCHA Response: " << recaptchaResponse << std::endl;
    } else {
        std::cerr << "Failed to create task." << std::endl;
    }

    return 0;
}

Reflexiones finales

Al concluir, puedo decir con confianza que integrar CapSolver en mis proyectos ha hecho que el manejo de desafíos reCAPTCHA sea mucho más fácil. Ya sea V2 o V3, el proceso es sencillo y me ha ahorrado mucho tiempo. Si estás lidiando con desafíos similares, te recomiendo probar CapSolver; ha sido un cambio de juego para mí.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Resolviendo reCAPTCHA con Reconocimiento de IA en 2025
Resolviendo reCAPTCHA con Reconocimiento de IA en 2025

Explorar cómo la IA está transformando la resolución de reCAPTCHA, las soluciones de CapSolver y el panorama cambiante de la seguridad CAPTCHA en 2025.

reCAPTCHA
Logo of CapSolver

Adélia Cruz

11-Nov-2024

Resolviendo reCAPTCHA con Python, Java y C++
Resolviendo reCAPTCHA usando Python, Java y C++

¿Quieres saber cómo resolver reCAPTCHA con éxito usando tres lenguajes de programación poderosos: Python, Java y C++ en un solo blog? ¡Entra!

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

25-Oct-2024

Cómo resolver reCAPTCHA v2 con Rust
Cómo resolver reCAPTCHA v2 con Rust

Aprende a resolver reCaptcha v2 usando Rust y la API de Capsolver. Esta guía abarca los métodos con y sin proxy, proporcionando instrucciones paso a paso y ejemplos de código para integrar la resolución de reCaptcha v2 en tus aplicaciones Rust.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

17-Oct-2024

Guía para resolver reCAPTCHA v3 con puntuaciones altas en Python
Guía para resolver reCAPTCHA v3 con puntuaciones altas en Python

Esta guía te guiará a través de estrategias efectivas y técnicas de Python para resolver reCAPTCHA v3 con puntajes altos, asegurando que tus tareas de automatización se ejecuten sin problemas.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

17-Sep-2024

Cómo manejar múltiples desafíos de reCAPTCHA de forma concurrente
Cómo manejar múltiples desafíos de reCAPTCHA de forma concurrente

Aprende a manejar varios desafíos de reCAPTCHA simultáneamente en proyectos de web scraping. Este blog explica los diferentes tipos de reCAPTCHA, cómo identificarlos usando herramientas como Capsolver y automatizar la resolución de CAPTCHA usando Python y threading.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

10-Sep-2024

Cómo integrar soluciones reCAPTCHA v2 en Python para la extracción de datos
Cómo integrar soluciones reCAPTCHA v2 en Python para la extracción de datos

Aprende a integrar soluciones reCAPTCHA v2 en Python para una extracción de datos fluida. Explora las versiones de reCAPTCHA, comprende la extracción de datos y sigue un ejemplo sencillo utilizando Capsolver para automatizar la resolución de desafíos reCAPTCHA v2.

reCAPTCHA
Logo of CapSolver

Adélia Cruz

10-Sep-2024