Migra una integración de reCAPTCHA de 2Captcha a solvethree
No se trata solo de cambiar un endpoint. Sustituye la estructura clientKey/task por una solicitud plana autenticada con una clave Bearer, configura el sitio de destino en solvethree y proporciona un proxy. Mantén los ID de tareas existentes de 2Captcha separados de las nuevas tareas de solvethree.
En esta página
Comprobar la tarea que vas a migrar
Esta migración abarca reCAPTCHA v3 Enterprise a través de la API v2 de 2Captcha. No describe la API heredada in.php/res.php. Además, la versión de la API de 2Captcha no es la versión del CAPTCHA: solvethree no admite reCAPTCHA v2.
La solicitud inicial usa la estructura documentada en createTask de 2Captcha: las credenciales van fuera de un objeto de tarea específico del proveedor.
{
"clientKey": "TWO_CAPTCHA_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://accounts.example.com/login",
"websiteKey": "PUBLIC_SITE_KEY",
"minScore": 0.7,
"pageAction": "login",
"isEnterprise": true
}
}No traslades este objeto a la nueva API sin modificarlo. En particular, el tipo de tarea sin proxy y minScore no tienen cabida en la solicitud de solvethree siguiente.
Configurar el sitio y después sustituir la solicitud
Primero, configura el sitio de destino en la consola de solvethree. Tu espacio de trabajo necesita un perfil de sitio activo para poder resolver solicitudes de ese nombre de host. Enviar un nombre de host y una acción no crea un perfil.
Crea nuevas tareas con POST /v1/tasks en https://api.solvethree.com, usando Authorization: Bearer con la clave de API de tu espacio de trabajo. Guarda esa clave en el servidor. El contrato de creación de tareas usa un cuerpo JSON plano en lugar de un objeto task anidado.
| Entrada de la API v2 de 2Captcha | Equivalente en solvethree |
|---|---|
| clientKey | Clave de API del espacio de trabajo en la cabecera Authorization, no en el cuerpo JSON. |
| Objeto contenedor task | Elimínalo; envía los campos de la tarea en el nivel superior. |
| type: RecaptchaV3TaskProxyless | Omite type. Proporciona exactamente uno de los campos proxy o proxyCandidates. |
| websiteURL | Usa site solo con el nombre de host: accounts.example.com. No envíes url. |
| websiteKey | Configura el perfil del sitio de destino en la consola en lugar de copiar este campo en la tarea. |
| pageAction | Usa action con el valor de acción del sitio de destino, como login. |
| isEnterprise | Omítelo; el valor predeterminado de recaptchaType es enterprise-v3. |
| minScore | Omítelo; no lo copies en la solicitud a solvethree. |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}Sustituye el nombre de host, la acción y el proxy del ejemplo por los valores de tu sitio de destino. Elige requestId antes de enviar la solicitud y consérvalo para recuperarte de un tiempo de espera agotado; usa un valor nuevo para cada tarea lógica nueva.
El ejemplo usa un proxy. Como alternativa, proxyCandidates acepta como máximo doce URL de proxy HTTP o HTTPS distintas, sin rutas, consultas ni fragmentos. Envía un campo u otro, nunca ambos. Los candidatos permiten que el servicio pruebe salidas alternativas; no garantizan un proxy que funcione.
Sustituye la consulta periódica y la gestión de tiempos de espera
Mantén las tareas de 2Captcha en curso en su flujo getTaskResult, usando sus credenciales, identificadores de tarea y política de consulta documentada. Un identificador de tarea externo no es una referencia de tarea de solvethree.
- 1.
Gestiona la respuesta de creación
Comprueba si la respuesta HTTP indica un error antes de leer un cuerpo de respuesta de éxito. La creación de reCAPTCHA espera hasta 15 segundos de forma predeterminada, pero puede devolver una tarea en un estado no terminal. Si ya está en ready, usa la solución sin iniciar un bucle de consulta.
- 2.
Consulta solo las tareas sin terminar
Recupera la tarea de solvethree con GET /v1/tasks/:id. Sustituye la antigua comprobación de processing por pending y solving; ambos indican que la tarea no ha terminado. Solo ready contiene una solución utilizable.
- 3.
Configura la espera en la URL
La consulta mediante GET no espera de forma predeterminada. Para consultas de larga duración, establece el parámetro de consulta waitMs de la URL en un máximo de 15000, no como campo JSON. El tiempo de espera de tu cliente HTTP debe cubrir la espera solicitada más la sobrecarga de red.
- 4.
Detén la consulta al recibir failed
Lee errorCode y error y deja de consultar esa tarea. Las resoluciones fallidas se reembolsan. Un error como site-unreachable requiere investigación; no supongas que todos los fallos se deben al saldo ni sigas reenviando entradas no válidas sin modificarlas.
Que se agote el tiempo de espera de conexión no demuestra que la creación haya fallado. Si recibiste el identificador de tarea, recupera esa tarea. Si no lo recibiste, repite la misma solicitud con el mismo requestId para recuperar la tarea existente en lugar de crear otra resolución. Cambiar las entradas de la tarea mientras reutilizas ese requestId provoca un conflicto.
Mantén separados los errores HTTP de los fallos terminales de tarea en tu adaptador. El contrato de consulta y la gestión de fallos describen esas dos vías; no reutilices el analizador de respuestas de error de 2Captcha.
Actualiza la extracción y el envío del token
Sustituye la búsqueda de tokens del adaptador antiguo por solution.token de una tarea de solvethree en estado ready. Envía ese token donde el sitio de destino espera su valor de reCAPTCHA, no el identificador de tarea ni el objeto solution completo.
Usa la identidad de navegador userAgent y secChUa devuelta, junto con el proxy que funcionó, al enviar el token. Si proporcionaste proxyCandidates, usa el proxy que funcionó en lugar de elegir otro candidato para el envío.
Una tarea en estado ready significa que se generó una solución, no que el sitio web haya aceptado la solicitud de tu aplicación. Si el sitio de destino la rechaza, revisa el token enviado, la acción, la URL de destino, el proxy y la identidad del navegador antes de pagar por otra resolución.
Fuentes y referencia de la API
Ejecuta tu primera tarea.
Empieza con $5 de crédito en tu espacio de trabajo.