Ein reCAPTCHA Enterprise-Token mit cURL anfordern

Von solvethree4 Min. Lesezeit

Erstellen Sie eine Aufgabe mit dem Hostnamen Ihrer Website, der Aktion und dem Proxy. Wenn sie pending oder solving zurückgibt, fragen Sie die zurückgegebene Aufgaben-ID wiederholt ab. Lesen Sie das Token erst aus solution.token, wenn der Status ready lautet.

Auf dieser Seite

Website, Schlüssel und Proxy vorbereiten

  • Stellen Sie sicher, dass cURL und jq in Ihrer Shell verfügbar sind.
  • Setzen Sie SOLVETHREE_API_KEY auf den API-Schlüssel Ihres Workspace. Führen Sie diese Befehle serverseitig aus; halten Sie den Schlüssel aus dem Browsercode heraus.
  • Setzen Sie SOLVETHREE_PROXY auf die Proxy-URL, die Sie zum Lösen und zur Übermittlung des Tokens verwenden möchten.
  • Richten Sie in der Konsole ein aktives reCAPTCHA-Websiteprofil für Ihren Workspace ein. Ersetzen Sie accounts.example.com und login im Beispiel durch Ihren Hostnamen und Ihre Aktion.

Das Senden eines Hostnamens und einer Aktion erstellt kein Websiteprofil. Das Profil muss bereits aktiv sein, bevor Sie eine Lösung anfordern.

Aufgabe mit expliziter Wartezeit erstellen

cURL + jq · Eine Aufgabe erstellen
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
  --arg proxy "$SOLVETHREE_PROXY" \
  --arg requestId "login-$(date +%s)-$$" \
  '{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
  'https://api.solvethree.com/v1/tasks?waitMs=15000' \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @-

Der JSON-Body enthält site, action und einen einzelnen proxy. Genau eines der Felder proxy oder proxyCandidates ist erforderlich. Fügen Sie weder type noch url hinzu; ohne recaptchaType wird enterprise-v3 ausgewählt.

Der Abfrageparameter waitMs=15000 weist die Erstellungsanfrage an, bis zu 15 Sekunden zu warten. Er gehört in die URL, nicht in den JSON-Body. Das cURL-Timeout beträgt 30 Sekunden und lässt damit über die serverseitige Wartezeit hinaus Spielraum für den Netzwerk-Overhead. Beim Eintreffen der Antwort kann die Aufgabe noch nicht abgeschlossen sein.

Antwort lesen und Status unfertiger Aufgaben abfragen

Prüfen Sie auf einen HTTP-Fehler, bevor Sie den Body als Aufgabenantwort interpretieren. Beide Befehle verwenden --fail-with-body; behandeln Sie eine fehlgeschlagene HTTP-Anfrage getrennt von einer Aufgabe mit dem Status failed.

Eine Antwort mit fertiger Lösung hat diese Struktur. Die folgenden Werte sind Platzhalter, kein Token, das Sie übermitteln können.

Beispielantwort für eine fertige Lösung · Platzhalter-Zugangsdaten
{
  "id": "example-task",
  "status": "ready",
  "solution": {
    "token": "EXAMPLE_TOKEN",
    "userAgent": "EXAMPLE_USER_AGENT",
    "secChUa": "EXAMPLE_CLIENT_HINTS"
  }
}
Vorgehen je nach zurückgegebenem Aufgabenstatus
Vorgehen je nach zurückgegebenem Aufgabenstatus
StatusNächster Schritt
pending oder solvingBewahren Sie die zurückgegebene id auf und rufen Sie dieselbe Aufgabe ab. Es gibt noch keine verwendbare Lösung; erstellen Sie keine Ersatzaufgabe.
readyBeenden Sie die Statusabfrage und lesen Sie solution.token, solution.userAgent und solution.secChUa aus.
failedBeenden Sie die Statusabfrage und prüfen Sie errorCode und error. Fehlgeschlagene Lösungsvorgänge werden erstattet. Beheben Sie die Ursache, bevor Sie eine weitere Aufgabe starten.

Setzen Sie bei einer Antwort mit noch nicht abgeschlossenem Status TASK_ID in Ihrer Umgebung auf die zurückgegebene id und rufen Sie die Aufgabe anschließend ab:

Aufgaben-API · Vorhandene Aufgabe abrufen
curl --fail-with-body --max-time 30 \
  "https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY"

Diese GET-Anfrage wartet bis zu 15 Sekunden auf ein Ergebnis, bei einem HTTP-Timeout von 30 Sekunden. Ohne waitMs kehrt GET ohne Wartezeit zurück. Wiederholen Sie die GET-Anfrage nur, solange der Status pending oder solving lautet, und legen Sie im aufrufenden Code eine Gesamtfrist fest, damit die Abfrageschleife nicht unbegrenzt läuft.

Wenn die Aufgabe fehlschlägt, nutzen Sie ihre Fehlerdetails, statt ein Guthabenproblem anzunehmen. Beispielsweise erfordert site-unreachable eine Prüfung der Erreichbarkeit des Ziels, nicht das blinde erneute Senden unveränderter Eingaben.

Token übermitteln

Verwenden Sie solution.token in der Anfrage an die Zielanwendung. Die Aufgaben-id dient nur zum Abrufen der Aufgabe; sie ist nicht das CAPTCHA-Token. Wo das Token eingefügt werden muss, hängt vom Formular oder der API des Ziels ab. Daher gibt es keinen universellen Befehl zum Übermitteln an das Ziel.

Verwenden Sie beim Übermitteln des Tokens die zurückgegebenen Werte solution.userAgent und solution.secChUa zusammen mit dem erfolgreichen Proxy. Verwenden Sie beim obigen Beispiel mit einem einzelnen Proxy denselben SOLVETHREE_PROXY. Verwenden Sie keine davon unabhängige Browseridentität oder Ziel-URL.

ready bedeutet, dass solvethree eine Lösung generiert hat. Prüfen Sie die Antwort der Zielanwendung separat, um festzustellen, ob sie Ihre Anfrage akzeptiert hat.

Weitere Fragen

Ist das dasselbe wie die siteverify-API von Google?

Nein. Googles siteverify prüft ein bereits vorhandenes Token und erfordert den geheimen Verifizierungsschlüssel des Websitebetreibers. Die solvethree-API generiert eine Lösung mit dem API-Schlüssel Ihres Workspaces. Geben Sie keinen geheimen Verifizierungsschlüssel von Google in der Aufgabenanfrage an.

Führe deinen ersten Task aus.

Starte mit $5 Workspace-Guthaben.

Workspace erstellen
Ein reCAPTCHA Enterprise-Token mit cURL anfordern · solvethree