Migra una integración de reCAPTCHA de 2Captcha a solvethree

Por solvethree5 min de lectura

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.

Antes · envoltorio de tarea de la API v2 de 2Captcha
{
  "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.

Cambios en la solicitud de ejemplo
Cambios en la solicitud de ejemplo
Entrada de la API v2 de 2CaptchaEquivalente en solvethree
clientKeyClave de API del espacio de trabajo en la cabecera Authorization, no en el cuerpo JSON.
Objeto contenedor taskElimínalo; envía los campos de la tarea en el nivel superior.
type: RecaptchaV3TaskProxylessOmite type. Proporciona exactamente uno de los campos proxy o proxyCandidates.
websiteURLUsa site solo con el nombre de host: accounts.example.com. No envíes url.
websiteKeyConfigura el perfil del sitio de destino en la consola en lugar de copiar este campo en la tarea.
pageActionUsa action con el valor de acción del sitio de destino, como login.
isEnterpriseOmítelo; el valor predeterminado de recaptchaType es enterprise-v3.
minScoreOmítelo; no lo copies en la solicitud a solvethree.
reCAPTCHA Enterprise · estructura de la solicitud
{
  "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. 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. 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. 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. 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.

Ejecuta tu primera tarea.

Empieza con $5 de crédito en tu espacio de trabajo.

Crear un espacio de trabajo
Migra una integración de reCAPTCHA de 2Captcha a solvethree · solvethree