Solicita un token de reCAPTCHA Enterprise con cURL
Crea una tarea con el nombre de host de tu sitio, la acción y el proxy. Si devuelve pending o solving, consulta el ID de tarea devuelto. Lee el token de solution.token solo cuando el estado sea ready.
En esta página
Prepara el sitio, la clave y el proxy
- Asegúrate de tener cURL y jq disponibles en tu shell.
- Establece
SOLVETHREE_API_KEYen la clave de API de tu espacio de trabajo. Ejecuta estos comandos en el servidor; no incluyas la clave en código del navegador. - Establece
SOLVETHREE_PROXYen la URL del proxy que vayas a usar para resolver y enviar el token. - Configura en la consola un perfil de sitio de reCAPTCHA activo para tu espacio de trabajo. Sustituye
accounts.example.comyloginen el ejemplo por tu nombre de host y tu acción.
Enviar un nombre de host y una acción no crea un perfil de sitio. El perfil ya debe estar activo antes de solicitar una resolución.
Crea la tarea con una espera explícita
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
--arg proxy "$SOLVETHREE_PROXY" \
--arg requestId "login-$(date +%s)-$$" \
'{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
'https://api.solvethree.com/v1/tasks?waitMs=15000' \
-H "Authorization: Bearer $SOLVETHREE_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @-El cuerpo JSON proporciona site, action y un solo proxy. Se requiere exactamente uno de los campos proxy o proxyCandidates. No añadas type ni url; omitir recaptchaType selecciona enterprise-v3.
El parámetro de consulta waitMs=15000 indica que la solicitud de creación debe esperar hasta 15 segundos. Va en la URL, no en el cuerpo JSON. El tiempo de espera de cURL es de 30 segundos, lo que deja margen más allá de esa espera del servidor para la sobrecarga de red. La tarea aún puede estar en un estado no terminal cuando llegue la respuesta.
Lee la respuesta y consulta las tareas sin finalizar
Comprueba si hay un error HTTP antes de interpretar el cuerpo como una respuesta de tarea. Ambos comandos usan --fail-with-body; gestiona una solicitud HTTP fallida por separado de una tarea cuyo estado sea failed.
Una respuesta lista tiene esta estructura. Los valores siguientes son ejemplos, no un token que puedas enviar.
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| Estado | Siguiente acción |
|---|---|
| pending o solving | Conserva el id devuelto y recupera la misma tarea. Aún no hay una solución utilizable; no crees otra tarea para sustituirla. |
| listo | Deja de consultar y lee solution.token, solution.userAgent y solution.secChUa. |
| failed | Deja de consultar e inspecciona errorCode y error. Las resoluciones fallidas se reembolsan. Corrige la causa antes de iniciar otra tarea. |
Si la respuesta no es terminal, establece TASK_ID en tu entorno en el valor de id devuelto y después recupera la tarea:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"Esta solicitud GET espera hasta 15 segundos para obtener un resultado, con un tiempo de espera HTTP de 30 segundos. Sin waitMs, GET devuelve la respuesta sin esperar. Repite GET solo mientras el estado sea pending o solving, y establece un plazo total en el código que realiza las llamadas para que el bucle de consultas no se ejecute indefinidamente.
Si la tarea falla, usa los detalles del error en lugar de suponer que es un problema de saldo. Por ejemplo, site-unreachable requiere comprobar la accesibilidad del destino, no volver a enviar a ciegas los mismos datos de entrada.
Envía el token
Usa solution.token en la solicitud a la aplicación de destino. El id de la tarea solo sirve para recuperarla; no es el token CAPTCHA. La ubicación del token depende del formulario o de la API de destino, por lo que no existe un comando universal para enviarlo.
Usa los valores devueltos solution.userAgent y solution.secChUa, junto con el proxy que funcionó, al enviar el token. En el ejemplo anterior, que usa un único proxy, utiliza el mismo SOLVETHREE_PROXY. No uses una identidad de navegador ni una URL de destino ajenas a la resolución.
ready significa que solvethree generó una solución. Comprueba por separado la respuesta de la aplicación de destino para determinar si aceptó tu solicitud.
Otras preguntas
¿Es lo mismo que la API siteverify de Google?
No. siteverify de Google comprueba un token que ya existe y requiere el secreto de verificación del propietario del sitio web. La API de solvethree genera una solución con la clave de API de tu espacio de trabajo. No incluyas un secreto de verificación de Google en la solicitud de la tarea.
Fuentes y referencia de la API
Ejecuta tu primera tarea.
Empieza con $5 de crédito en tu espacio de trabajo.