Tipos de tarea
reCAPTCHA v3
Esta página se tradujo automáticamente de la versión en chino y puede contener errores. Prevalece la versión en chino.
reCAPTCHA v3 no tiene casilla de verificación ni imágenes: la página puntúa a los visitantes en segundo plano. YesCaptcha devuelve un token (gRecaptchaResponse) que envías al sitio de destino. RecaptchaV3TaskProxyless cuesta 20 puntos (≈ $3.00 / 1k) por tarea y es asíncrono: primero createTask y después getTaskResult cada 5 segundos. Si la tarea falla o agota el tiempo, los puntos se reembolsan automáticamente.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint ChinaEl cuerpo de la solicitud es JSON y se autentica con clientKey. Consulta el resultado en el mismo endpoint en el que creaste la tarea.
Cuándo usarlo
Sección titulada «Cuándo usarlo»- El código fuente de la página contiene
grecaptcha.execute(...)o cargarecaptcha/api.js?render=SITE_KEY: reCAPTCHA v3 estándar. - Llama a
grecaptcha.enterprise.execute(...)o cargarecaptcha/enterprise.js: reCAPTCHA v3 Enterprise. UsaRecaptchaV3EnterpriseTaskoRecaptchaV3EnterpriseTaskM1.
Para saber cómo distinguirlos, consulta Identificar el tipo de captcha.
Tipos de tarea y precios
Sección titulada «Tipos de tarea y precios»| Tipo de tarea | Precio | Modo | Notas |
|---|---|---|---|
RecaptchaV3TaskProxyless | $3.00 / 1k; 20 puntos/tarea · ¥20 / 1k | Asíncrono | |
RecaptchaV3TaskProxylessM1 | $3.75 / 1k; 25 puntos/tarea · ¥25 / 1k | Asíncrono | |
RecaptchaV3TaskProxylessM1S7 | $4.50 / 1k; 30 puntos/tarea · ¥30 / 1k | Asíncrono | Solicita una puntuación de 0.7; no necesita parámetros adicionales |
RecaptchaV3TaskProxylessM1S9 | $5.25 / 1k; 35 puntos/tarea · ¥35 / 1k | Asíncrono | Solicita una puntuación de 0.9; no necesita parámetros adicionales |
RecaptchaV3EnterpriseTask | $3.00 / 1k; 20 puntos/tarea · ¥20 / 1k | Asíncrono | |
RecaptchaV3EnterpriseTaskM1 | $3.75 / 1k; 25 puntos/tarea · ¥25 / 1k | Asíncrono |
Los precios en dólares son estimaciones con US$1 ≈ ¥6.67; las tareas se cobran en puntos.
RecaptchaV3TaskProxylessyRecaptchaV3TaskProxylessM1tienen los mismos parámetros pero usan rutas distintas; puedes usar uno como respaldo del otro.- Si el sitio de destino exige una puntuación alta, usa
RecaptchaV3TaskProxylessM1S7(0.7) oRecaptchaV3TaskProxylessM1S9(0.9); no necesitan parámetros adicionales.
Parámetros de la solicitud
Sección titulada «Parámetros de la solicitud»| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
type | string | Sí | Tipo de tarea; consulta "Tipos de tarea y precios" en esta página |
websiteURL | string | Sí | URL completa de la página que muestra el captcha. Usa el sitio donde ves el captcha, no el dominio del proveedor del captcha |
websiteKey | string | Sí | La clave del sitio (sitekey), que se encuentra en el código fuente de la página o en las solicitudes de red; normalmente no cambia |
pageAction | string | No | La acción de reCAPTCHA v3; debe coincidir con el valor que la página pasa a grecaptcha.execute, o el token podría ser rechazado |
pageAction debe coincidir con el action que la página pasa a grecaptcha.execute(SITE_KEY, {action: '...'}); si no, el sitio puede rechazar el token. Cómo encontrarlo: Encontrar los parámetros de reCAPTCHA.
Ejemplo de solicitud
Sección titulada «Ejemplo de solicitud»{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "RecaptchaV3TaskProxyless", websiteURL: "https://example.com/login", websiteKey: "SITE_KEY_OF_THE_PAGE", pageAction: "login",});console.log(solution.gRecaptchaResponse);Sustituye websiteURL, websiteKey y pageAction por los valores del sitio de destino.
Resultado
Sección titulada «Resultado»{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| Campo | Tipo | Descripción |
|---|---|---|
gRecaptchaResponse | string | El token que debes enviar al sitio de destino. De un solo uso, válido durante unos 120 segundos; úsalo en un plazo de 60 segundos |
Mientras la tarea se procesa, recibes {"errorId": 0, "status": "processing"}; vuelve a consultar 5 segundos después. Si hay un error, trátalo según errorCode, como se explica en Códigos de error. Para saber cómo enviar el token, consulta Completar reCAPTCHA con un token.
Preguntas frecuentes
Sección titulada «Preguntas frecuentes»¿Por qué el sitio rechaza algunos tokens?
Sección titulada «¿Por qué el sitio rechaza algunos tokens?»En v3 es el sitio de destino quien decide según la puntuación, y puede cambiar su umbral en cualquier momento, así que no todos los tokens pasan. Comprueba que pageAction sea correcto; si el sitio exige una puntuación alta, prueba M1S7 o M1S9; también puedes comparar con otros tipos similares.
¿Cómo relleno la versión Enterprise de v3?
Sección titulada «¿Cómo relleno la versión Enterprise de v3?»Igual que la versión estándar: websiteURL, websiteKey y pageAction, con el tipo RecaptchaV3EnterpriseTask o RecaptchaV3EnterpriseTaskM1.
¿Cuánto tiempo es válido un token?
Sección titulada «¿Cuánto tiempo es válido un token?»Es de un solo uso y es válido unos 120 segundos. Te recomendamos enviarlo en menos de 60 segundos.
Guías relacionadas
Sección titulada «Guías relacionadas»- Identificar el tipo de captcha
- Encontrar los parámetros de reCAPTCHA (incluye cómo encontrar
pageAction) - Completar reCAPTCHA con un token