Resolviendo reCAPTCHA usando Python, Java y C++

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.
-
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.
-
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.
-
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.
- Demostración de reCAPTCHA v2
Ver la demostración de reCAPTCHA v2- Demostración de reCAPTCHA v3
Ver la demostración de reCAPTCHA v3- 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/userverifypara obtener el token de paso; - Para V3, la solicitud
/recaptcha/api2/reloadpuede obtener el token de paso directamente
Ejemplo completo de llamada a la API de CapSolver
- Python reCAPTCHA V2
python
# 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
# 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 dek=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
pip install requests
Paso 3: Código de ejemplo
python
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:
- cpr: Una biblioteca HTTP de C++.
- jsoncpp: Una biblioteca de C++ para el análisis JSON.
Puedes instalar estas usando vcpkg:
bash
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
#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.
- createTask: Esta función crea una tarea reCAPTCHA.
- getTaskResult: Esta función recupera el resultado de la tarea creada.
Aquí está el 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 << "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

CapSolver Extension - Resolver reCAPTCHA en tu navegador
Resolver reCaptcha v2 / v3 / invisible / enterprise en cualquier página web sin esfuerzo usando la Extensión Capsolver para Resolver Captchas

Adélia Cruz
27-Oct-2025

Cómo resolver reCAPTCHA en el web scraping usando Python
Aprende a resolver reCAPTCHA v2 y v3 en el raspado web usando Python y Capsolver. Guía paso a paso, opciones de proxy y ejemplos de código para una automatización fluida.

Adélia Cruz
24-Oct-2025

Automatización de SEO impulsada por IA: Cómo resolver Captcha para una recopilación de datos de SERP más inteligente
Descubre cómo la automatización de SEO impulsada por IA supera los desafíos de CAPTCHA para una recopilación más inteligente de datos de SERP y conoce las soluciones de reCAPTCHA v2/v3

Adélia Cruz
23-Oct-2025

Cómo resolver reCAPTCHA v2: Guía para resolver reCAPTCHA v2
Aprende a automatizar la resolución de Google reCAPTCHA v2 usando CapSolver. Descubre la integración de API y SDK, guías paso a paso y códigos de bonificación para facilitar la resolución de captchas en proyectos de scraping web, automatización y desarrollo.

Emma Foster
22-Oct-2025

Solucionador de reCAPTCHA Reconocimiento Automático y Métodos de Resolución
Aprende cómo reconocer y resolver automáticamente los desafíos de Google reCAPTCHA v2, v3, invisible y empresarial usando técnicas avanzadas de IA y OCR.

Aloísio Vítor
22-Oct-2025

¿Cuál solucionador de reCAPTCHA es el mejor? Mejor solucionador de reCAPTCHA
En este artículo, exploraremos los factores clave que determinan la efectividad de un solucionador de reCAPTCHA y destacaremos por qué CapSolver se destaca como el mejor solucionador de reCAPTCHA para 2024.

Anh Tuan
22-Oct-2025


