ReCaptchaV2: resolviendo reCAPTCHA v2
Cree la tarea con el método createTask y obtenga el resultado con el método getTaskResult.
Los tipos de tarea types
que admitimos:
ReCaptchaV2TaskProxyLess
utiliza el proxy integrado del servidor.ReCaptchaV2EnterpriseTask
este tipo de tarea requiere sus propios proxies.ReCaptchaV2EnterpriseTaskProxyLess
utiliza el proxy integrado del servidor.
Crear Tarea
Cree una tarea con el método createTask.
Antes de crear una tarea, si necesita utilizar tokens en herramientas de automatización como playwright y puppeteer, es posible que necesite encontrar sus funciones de callback. Referencia:
Estructura del Objeto de Tarea
Si no sabe cómo configurar los parámetros, utilice la Extensión CapSolver para obtener automáticamente los parámetros necesarios.
- Artículo de referencia: Cómo detectar cualquier Captcha y extraer sus parámetros
Si encuentra que el token v2 es inválido, utilice la Extensión CapSolver para obtener la configuración JSON y envíela a nuestro servicio de atención al cliente para su configuración. Después de la configuración, mejorará en gran medida la puntuación del token.
- Artículo de referencia: Cómo resolver reCAPTCHA v2, v2 invisible, v3, v3 Enterprise ≥0.9 de puntuación)
Propiedades | Tipo | Requerido | Descripción |
---|---|---|---|
type | String | Requerido | ReCaptchaV2TaskProxyLess ReCaptchaV2EnterpriseTask ReCaptchaV2EnterpriseTaskProxyLess |
websiteURL | String | Requerido | La URL de la página web de destino que carga el captcha. Es mejor enviar la URL completa en lugar de solo el host. |
websiteKey | String | Requerido | Clave del sitio web de Recaptcha. |
proxy | String | Opcional | Aprenda Uso de proxies. |
pageAction | String | Opcional | Para ReCaptchaV2, si hay un parámetro sa en el payload del endpoint /anchor , por favor envíe su valor |
recaptchaDataSValue | String | Opcional | Para la versión normal de ReCaptchaV2, si hay un parámetro s en el payload del endpoint /anchor , por favor envíe su valor |
enterprisePayload | Object | Opcional | Para la versión enterprise de ReCaptchaV2, si hay un parámetro s en el payload del endpoint /anchor , por favor envíe su valor |
isInvisible | Bool | Opcional | Pase “true” si no hay una casilla de verificación “No soy un robot” pero el desafío aún aparecerá, generalmente requerido en el modo v2 invisible. |
isSession | Bool | Opcional | El modo de sesión, cuando está habilitado, devolverá un valor recaptcha-ca-t , que se utiliza como cookie. Suele aparecer en v3.Nota: Algunos sitios web requieren un valor recaptcha-ca-e , que suele aparecer en v2. Si este valor está presente, se devolverá automáticamente sin ninguna configuración de parámetro adicional. |
apiDomain | String | Opcional | El nombre de dominio para cargar el captcha. Normalmente, no es necesario pasar este parámetro. • http://www.google.com/ • http://www.recaptcha.net/ |
Ejemplo de Solicitud
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV2Task",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"enterprisePayload": {
"s": "SOME_ADDITIONAL_TOKEN" // Optional
},
"isInvisible": false, // Optional
"pageAction": "submit", // Optional
"apiDomain": "", // Optional
"proxy": "http:ip:port:user:pass", // socks5:ip:port:user:pass, Optional
}
}
Después de enviarnos la tarea, debería recibir en la respuesta un ‘taskId’ si es exitosa. Por favor, lea errorCode: lista completa de errores si no recibió el id de la tarea.
Ejemplo de Respuesta
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Obtención de Resultados
Una vez que tenga el taskId, deberá enviar el taskId para recuperar la solución. La estructura de la respuesta se explica en getTaskResult.
Dependiendo de la carga del sistema, obtendrá los resultados en el intervalo de 1s
a 10s
Ejemplo de Solicitud
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Ejemplo de Respuesta
{
"errorId": 0,
"errorCode": null,
"errorDescription": null,
"solution": {
"userAgent": "xxx", // Agente de usuario
"secChUa": "xxx", // Sec-Ch-Ua
"createTime": 1671615324290, // El tiempo de creación del token
"gRecaptchaResponse": "3AHJ......", // token
"recaptcha-ca-t": "AbEM......", // Algunos sitios web v3 tienen modo de sesión. Después de habilitar isSession, este parámetro será devuelto y usado como una cookie.
"recaptcha-ca-e": "Abp_......" // Algunos sitios web v2 tienen este parámetro, que se usa como una cookie. Si existe tal valor, se devolverá automáticamente.
},
"status": "ready"
}
Usar Solicitud SDK
#pip install --upgrade capsolver
#export CAPSOLVER_API_KEY='...'
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})
Código de Ejemplo
# pip install requests
import requests
import time
# TODO: configure sus ajustes
api_key = "YOUR_API_KEY" # su clave de api de capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # clave del sitio de su sitio objetivo
site_url = "https://www.google.com/recaptcha/api2/demo" # url de la página de su sitio objetivo
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("Error al crear la tarea:", res.text)
return
print(f"Obtenido taskId: {task_id} / Obteniendo resultado...")
while True:
time.sleep(1) # retraso
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("¡Error al resolver! respuesta:", res.text)
return
token = capsolver()
print(token)