Eine CAPTCHA-Lösung mit Axios übermitteln
Lösen Sie mit dem Node.js-SDK und verwenden Sie anschließend Axios für die Zielanfrage. Übergeben Sie den erfolgreichen Proxy an HttpsProxyAgent und setzen Sie proxy: false, damit Axios keine konkurrierende Proxy-Konfiguration anwendet. Ihre Anwendung muss weiterhin die Formularfelder, den CSRF-Wert und die Sitzungscookies bereitstellen.
Auf dieser Seite
SDK installieren und konfigurieren
Verwenden Sie Node.js 22+ und installieren Sie die Abhängigkeiten mit npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. Das offizielle SDK wird über diese Tarball-URL verteilt; ersetzen Sie sie nicht durch ein vermeintliches Paket aus der npm-Registry.
- Setzen Sie
SOLVETHREE_API_KEYauf Ihren Workspace-API-Schlüssel. Führen Sie diesen Code auf dem Server aus und bewahren Sie den Schlüssel dort auf. - Setzen Sie
SOLVETHREE_PROXYauf die Proxy-URL, die sowohl zum Lösen als auch zur Übermittlung verwendet wird. - Erstellen Sie vor dem Lösen in der Konsole ein aktives Profil für die Zielseite. Durch die Angabe eines Hostnamens und einer Aktion wird keines erstellt. Siehe Einrichtung eines Websiteprofils.
- Ersetzen Sie den Beispielhostnamen, die Aktion und die Anmelde-URL durch die Werte Ihrer Anwendung.
siteist ein Hostname, keine vollständige URL; die Aktion muss zum Zielvorgang passen.
Lösen, dann über den erfolgreichen Proxy übermitteln
client.solve() erstellt die Aufgabe und fragt sie ab, bis sie bereit ist oder eine Ausnahme ausgelöst wird. Anschließend wählt das Beispiel mit successfulProxy(input, result) den ursprünglichen erfolgreichen Proxy aus und verwendet ihn für die Axios-Anfrage.
// 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 leitet die HTTPS-Anfrage an die Zielseite über den ausgewählten Proxy. proxy: false deaktiviert die separate Proxy-Konfiguration von Axios, sodass der Agent die Steuerung behält. Dies konfiguriert die Zielanfrage – nicht die Verbindung des SDKs zur solvethree-API. Der Agent wird zerstört, wenn die Anfrage abgeschlossen ist oder fehlschlägt.
Verwenden Sie die zurückgegebenen Werte userAgent und secChUa weiterhin mit diesem Proxy. Ersetzen Sie sie bei der Übermittlung des Tokens nicht durch andere Browser-Header.
Anwendungsantwort prüfen
Der Axios-Aufruf hat ein Timeout von 30 Sekunden und folgt keinen Weiterleitungen. Da validateStatus jeden HTTP-Status akzeptiert, müssen Sie response.status und den Antwortinhalt selbst prüfen; eine HTTP-Fehlerantwort löst nicht allein aufgrund ihres Status eine Ausnahme aus.
Eine bereite Aufgabe bedeutet, dass eine Lösung erzeugt wurde, nicht, dass das Ziel sie akzeptiert hat. Prüfen Sie die tatsächliche Erfolgsbedingung der Anwendung, statt den protokollierten HTTP-Status als Nachweis einer erfolgreichen Anmeldung zu betrachten.
Quellen und API-Referenz
Führe deinen ersten Task aus.
Starte mit $5 Workspace-Guthaben.