Eine 2Captcha-reCAPTCHA-Integration auf solvethree umstellen

Von solvethree4 Min. Lesezeit

Dies ist nicht nur ein Wechsel des Endpunkts. Ersetzen Sie die clientKey/task-Hülle durch eine flache Anfrage, die mit einem Bearer-Schlüssel authentifiziert wird, konfigurieren Sie die Zielwebsite in solvethree und geben Sie einen Proxy an. Halten Sie bestehende 2Captcha-Aufgaben-IDs von neuen solvethree-Aufgaben getrennt.

Auf dieser Seite

Die zu migrierende Aufgabe prüfen

Diese Migration behandelt reCAPTCHA v3 Enterprise über 2Captcha API v2. Sie beschreibt nicht die ältere in.php/res.php-API. Außerdem ist die API-Version von 2Captcha nicht die CAPTCHA-Version: solvethree unterstützt reCAPTCHA v2 nicht.

Die ursprüngliche Anfrage verwendet die unter 2Captcha createTask dokumentierte Hülle: Zugangsdaten außerhalb eines anbieterspezifischen Aufgabenobjekts.

Vorher · Aufgabenhülle der 2Captcha API v2
{
  "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
  }
}

Übernehmen Sie dieses Objekt nicht unverändert in die neue API. Insbesondere gehören der proxylose Aufgabentyp und minScore nicht in die folgende solvethree-Anfrage.

Website konfigurieren, dann die Anfrage ersetzen

Richten Sie zuerst die Zielwebsite in der solvethree-Konsole ein. Ihr Workspace benötigt ein aktives Website-Profil, bevor er Anfragen für diesen Hostnamen lösen kann. Das Senden eines Hostnamens und einer Aktion erstellt kein Profil.

Erstellen Sie neue Tasks mit POST /v1/tasks unter https://api.solvethree.com und verwenden Sie Authorization: Bearer mit Ihrem Workspace-API-Schlüssel. Bewahren Sie diesen Schlüssel auf dem Server auf. Die Spezifikation zur Task-Erstellung verwendet einen flachen JSON-Body statt eines verschachtelten task-Objekts.

Änderungen an der Beispielanfrage
Änderungen an der Beispielanfrage
Eingabe für die 2Captcha API v2Entsprechung in solvethree
clientKeyWorkspace-API-Schlüssel im Authorization-Header, nicht im JSON-Body.
task-WrapperEntfernen Sie ihn; senden Sie die Task-Felder auf der obersten Ebene.
type: RecaptchaV3TaskProxylessLassen Sie type weg. Geben Sie genau eines der Felder proxy oder proxyCandidates an.
websiteURLVerwenden Sie site nur mit dem Hostnamen: accounts.example.com. Senden Sie kein url.
websiteKeyKonfigurieren Sie das Profil der Zielwebsite in der Konsole, statt dieses Feld in den Task zu kopieren.
pageActionVerwenden Sie action mit dem Aktionswert der Zielwebsite, etwa login.
isEnterpriseLassen Sie es weg; recaptchaType hat standardmäßig den Wert enterprise-v3.
minScoreLassen Sie es weg; kopieren Sie es nicht in die solvethree-Anfrage.
reCAPTCHA Enterprise · Anfragestruktur
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://user:[email protected]:8080",
  "requestId": "example_login_001"
}

Ersetzen Sie den Beispielhostnamen, die Aktion und den Proxy durch die Werte Ihrer Zielwebsite. Wählen Sie requestId vor dem Senden der Anfrage und bewahren Sie den Wert zur Wiederherstellung nach einem Timeout auf; verwenden Sie für jeden neuen logischen Task einen neuen Wert.

Das Beispiel verwendet einen Proxy. Alternativ akzeptiert proxyCandidates höchstens zwölf unterschiedliche HTTP- oder HTTPS-Proxy-URLs ohne Pfade, Abfrageparameter oder Fragmente. Senden Sie eines der beiden Felder, niemals beide. Mit Kandidaten kann der Dienst alternative Ausgangsverbindungen ausprobieren; sie garantieren keinen funktionierenden Proxy.

Polling und Timeout-Behandlung ersetzen

Behalten Sie für laufende 2Captcha-Tasks dessen getTaskResult-Ablauf bei und verwenden Sie die zugehörigen Zugangsdaten, Task-IDs und dokumentierten Polling-Regeln. Eine fremde Task-ID ist keine solvethree-Task-Referenz.

  1. 1.

    Antwort auf die Erstellung verarbeiten

    Prüfen Sie auf eine nicht erfolgreiche HTTP-Antwort, bevor Sie eine Erfolgs-Payload auslesen. Die reCAPTCHA-Erstellung wartet standardmäßig bis zu 15 Sekunden, kann aber einen noch nicht abgeschlossenen Task zurückgeben. Ist er bereits ready, verwenden Sie die Lösung, ohne eine Polling-Schleife zu starten.

  2. 2.

    Nur nicht abgeschlossene Tasks abfragen

    Rufen Sie den solvethree-Task mit GET /v1/tasks/:id ab. Ersetzen Sie die bisherige Prüfung auf processing durch pending und solving; beide bedeuten, dass der Task noch nicht abgeschlossen ist. Nur ready enthält eine verwendbare Lösung.

  3. 3.

    Wartezeit in der URL festlegen

    GET-Polling wartet standardmäßig nicht. Setzen Sie für Long Polling den URL-Abfrageparameter waitMs auf höchstens 15000, nicht ein JSON-Feld. Berücksichtigen Sie beim Timeout Ihres HTTP-Clients die angeforderte Wartezeit plus Netzwerk-Overhead.

  4. 4.

    Bei failed stoppen

    Lesen Sie errorCode und error aus und beenden Sie dann das Polling für diesen Task. Fehlgeschlagene Lösungsvorgänge werden erstattet. Ein Fehler wie site-unreachable muss untersucht werden; gehen Sie nicht davon aus, dass jeder Fehler ein Guthabenproblem ist, und senden Sie unverändert ungültige Eingaben nicht immer wieder.

Ein Verbindungs-Timeout beweist nicht, dass die Erstellung fehlgeschlagen ist. Wenn Sie die Task-ID erhalten haben, rufen Sie diesen Task ab. Andernfalls wiederholen Sie dieselbe Anfrage mit derselben requestId, um den bestehenden Task wiederzufinden, statt einen weiteren Lösungsvorgang zu erstellen. Wenn Sie die Task-Eingaben ändern und dabei dieselbe requestId wiederverwenden, entsteht ein Konflikt.

Behandeln Sie HTTP-Fehler in Ihrem Adapter getrennt von endgültigen Task-Fehlern. Die Polling-Spezifikation und die Fehlerbehandlung beschreiben diese beiden Fälle; verwenden Sie den Parser für 2Captcha-Fehler-Payloads nicht weiter.

Token-Extraktion und Übermittlung aktualisieren

Ersetzen Sie die Token-Abfrage des alten Adapters durch solution.token aus einem solvethree-Task mit dem Status ready. Übermitteln Sie dieses Token dort, wo die Zielwebsite ihren reCAPTCHA-Wert erwartet – nicht die Task-ID oder das gesamte solution-Objekt.

Verwenden Sie beim Übermitteln des Tokens die zurückgegebene Browseridentität aus userAgent und secChUa zusammen mit dem erfolgreichen Proxy. Wenn Sie proxyCandidates angegeben haben, verwenden Sie den erfolgreichen Proxy, statt für die Übermittlung einen anderen Kandidaten auszuwählen.

Ein Task mit dem Status ready bedeutet, dass eine Lösung generiert wurde, nicht dass die Website Ihre Anwendungsanfrage akzeptiert hat. Wenn die Zielwebsite sie ablehnt, prüfen Sie das gesendete Token, die Aktion, die Ziel-URL, den Proxy und die Browseridentität, bevor Sie für einen weiteren Lösungsvorgang bezahlen.

Führe deinen ersten Task aus.

Starte mit $5 Workspace-Guthaben.

Workspace erstellen
Eine 2Captcha-reCAPTCHA-Integration auf solvethree umstellen · solvethree