Envía una solución de CAPTCHA con Axios
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_KEYcon la clave de API de tu espacio de trabajo. Ejecuta este código en el servidor y mantén la clave allí. - Establece
SOLVETHREE_PROXYcon 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.
sitees 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.
// 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.
Fuentes y referencia de la API
Ejecuta tu primera tarea.
Empieza con $5 de crédito en tu espacio de trabajo.