Envoyer une solution CAPTCHA avec Axios

Par solvethree3 min de lecture

Effectuez la résolution avec le SDK Node.js, puis utilisez Axios pour la requête cible. Passez le proxy ayant permis la résolution à HttpsProxyAgent et définissez proxy: false pour qu’Axios n’applique pas une configuration de proxy concurrente. Votre application doit toujours fournir les champs du formulaire, la valeur CSRF et les cookies de session.

Sur cette page

Installer et configurer le SDK

Utilisez Node.js 22+ et installez les dépendances avec npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. Le SDK officiel est distribué via cette URL d’archive tarball ; ne la remplacez pas par un nom de paquet supposé dans le registre npm.

  • Définissez SOLVETHREE_API_KEY sur la clé API de votre espace de travail. Exécutez ce code sur le serveur et conservez-y la clé.
  • Définissez SOLVETHREE_PROXY sur l’URL du proxy utilisé à la fois pour la résolution et pour l’envoi.
  • Créez un profil actif pour le site cible dans la console avant la résolution. Fournir un nom d’hôte et une action ne crée pas de profil. Consultez la configuration du profil de site.
  • Remplacez le nom d’hôte, l’action et l’URL de connexion de l’exemple par les valeurs de votre application. site est un nom d’hôte, pas une URL complète ; l’action doit correspondre à l’opération cible.

Effectuez la résolution, puis envoyez via le proxy ayant permis la résolution

client.solve() crée la tâche et interroge son état jusqu’à ce qu’elle soit prête ou qu’une exception soit levée. L’exemple sélectionne ensuite le proxy d’origine ayant permis la résolution avec successfulProxy(input, result) et l’utilise pour la requête Axios.

Axios · agent proxy explicite pour la cible
// 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 achemine la requête HTTPS cible via le proxy sélectionné. proxy: false désactive la configuration de proxy distincte d’Axios, laissant l’agent gérer le routage. Cela configure la requête cible, pas la connexion du SDK à l’API solvethree. L’agent est détruit lorsque la requête se termine ou échoue.

Conservez les valeurs userAgent et secChUa renvoyées avec ce proxy. Ne les remplacez pas par des en-têtes de navigateur sans rapport lors de l’envoi du jeton.

Vérifiez la réponse de l’application

L’appel Axios a un délai d’expiration de 30 secondes et ne suit pas les redirections. Comme validateStatus accepte tous les statuts HTTP, vérifiez vous-même response.status et le corps de la réponse ; une réponse d’erreur HTTP ne déclenchera pas d’exception sur la seule base de son statut.

Une tâche prête signifie qu’une solution a été générée, pas que la cible l’a acceptée. Vérifiez la condition réelle de réussite de l’application plutôt que de considérer le statut HTTP journalisé comme une preuve de connexion réussie.

Lancez votre première tâche.

Démarrez avec $5 de crédit dans votre espace de travail.

Créer un espace de travail
Envoyer une solution CAPTCHA avec Axios · solvethree