Guía
Tarea (Token)
reCAPTCHA v2

ReCaptchaV2: resolviendo reCAPTCHA v2

TIP

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

WARNING

Si no sabe cómo configurar los parámetros, utilice la Extensión CapSolver para obtener automáticamente los parámetros necesarios.


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.

PropiedadesTipoRequeridoDescripción
typeStringRequeridoReCaptchaV2TaskProxyLess
ReCaptchaV2EnterpriseTask
ReCaptchaV2EnterpriseTaskProxyLess
websiteURLStringRequeridoLa URL de la página web de destino que carga el captcha. Es mejor enviar la URL completa en lugar de solo el host.
websiteKeyStringRequeridoClave del sitio web de Recaptcha.
proxyStringOpcionalAprenda Uso de proxies.
pageActionStringOpcionalPara ReCaptchaV2, si hay un parámetro sa en el payload del endpoint /anchor, por favor envíe su valor
recaptchaDataSValueStringOpcionalPara la versión normal de ReCaptchaV2, si hay un parámetro s en el payload del endpoint /anchor, por favor envíe su valor
enterprisePayloadObjectOpcionalPara la versión enterprise de ReCaptchaV2, si hay un parámetro s en el payload del endpoint /anchor, por favor envíe su valor
isInvisibleBoolOpcionalPase “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.
isSessionBoolOpcionalEl 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.
apiDomainStringOpcionalEl 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)