Envía una solución de CAPTCHA con Axios

Por solvethree3 min de lectura

Resuelve con el SDK de Node.js y, después, utiliza Axios para la solicitud al destino. Pasa el proxy con el que se completó la resolución a HttpsProxyAgent y establece proxy: false para que Axios no aplique una configuración de proxy en conflicto. Tu aplicación sigue siendo responsable de proporcionar los campos del formulario, el valor CSRF y las cookies de sesión.

En esta página

Instala y configura el SDK

Utiliza Node.js 22+ e instala las dependencias con npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. El SDK oficial se distribuye mediante esa URL de archivo tarball; no la sustituyas por un supuesto paquete del registro npm.

  • Establece SOLVETHREE_API_KEY con la clave de API de tu espacio de trabajo. Ejecuta este código en el servidor y mantén la clave allí.
  • Establece SOLVETHREE_PROXY con la URL del proxy utilizado tanto para la resolución como para el envío.
  • Crea un perfil activo para el sitio de destino en la consola antes de resolver. Proporcionar un nombre de host y una acción no crea uno. Consulta la configuración del perfil del sitio.
  • Sustituye el nombre de host, la acción y la URL de inicio de sesión del ejemplo por los valores de tu aplicación. site es un nombre de host, no una URL completa; la acción debe coincidir con la operación de destino.

Resuelve y después envía a través del proxy con el que se completó la resolución

client.solve() crea la tarea y la consulta hasta que esté lista o se lance una excepción. A continuación, el ejemplo selecciona el proxy original con el que se completó la resolución mediante successfulProxy(input, result) y lo utiliza para la solicitud de Axios.

Axios · agente de proxy explícito para el destino
// npm install axios https-proxy-agent and the official solvethree SDK tarball.
import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { Solvethree, successfulProxy } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const input = { site: 'accounts.example.com', action: 'login', proxy: process.env.SOLVETHREE_PROXY };
const result = await client.solve(input);
const proxy = successfulProxy(input, result);
if (!proxy) throw new Error('No valid successful proxy');
const agent = new HttpsProxyAgent(proxy);
try {
  const response = await axios.post('https://accounts.example.com/login',
    new URLSearchParams({ 'g-recaptcha-response': result.solution.token }).toString(), {
      httpsAgent: agent, proxy: false, maxRedirects: 0, timeout: 30000,
      headers: { 'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': result.solution.userAgent, 'sec-ch-ua': result.solution.secChUa },
      validateStatus: () => true,
    });
  console.log('Application HTTP status:', response.status);
  // Add the application's real form fields, CSRF value and session cookies.
} finally { agent.destroy(); }

httpsAgent dirige la solicitud HTTPS al destino a través del proxy seleccionado. proxy: false desactiva la configuración de proxy independiente de Axios y deja el control al agente. Esto configura la solicitud al destino, no la conexión del SDK a la API de solvethree. El agente se destruye cuando la solicitud finaliza o falla.

Mantén los valores devueltos de userAgent y secChUa junto con ese proxy. No los sustituyas por cabeceras de navegador que no correspondan al enviar el token.

Comprueba la respuesta de la aplicación

La llamada de Axios tiene un tiempo de espera de 30 segundos y no sigue redirecciones. Como validateStatus acepta cualquier estado HTTP, comprueba tú mismo response.status y el cuerpo de la respuesta; una respuesta de error HTTP no lanzará una excepción solo por su estado.

Una tarea lista significa que se ha generado una solución, no que el destino la haya aceptado. Comprueba la condición real de éxito de la aplicación en lugar de considerar el estado HTTP registrado como prueba de que el inicio de sesión se ha completado correctamente.

Ejecuta tu primera tarea.

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

Crear un espacio de trabajo
Envía una solución de CAPTCHA con Axios · solvethree