Die CAPTCHA-Lösungs-API aus n8n aufrufen

Von solvethree4 Min. Lesezeit

Erstellen Sie die Aufgabe mit dem HTTP-Request-Knoten von n8n und verzweigen Sie dann nach ihrem Status. Wenn sie noch aussteht oder bearbeitet wird, warten Sie und rufen Sie dieselbe Aufgaben-ID ab – senden Sie keinen weiteren POST.

Auf dieser Seite

Website und Zugangsdaten einrichten

  1. 1.

    Websiteprofil aktivieren

    Richten Sie den Zielhostnamen in der solvethree-Konsole ein und stellen Sie sicher, dass sein Profil für Ihren Workspace aktiv ist. Das Senden eines Hostnamens und einer Aktion in einer Aufgabe erstellt das Profil nicht.

  2. 2.

    Header-Auth-Zugangsdaten in n8n erstellen

    Konfigurieren Sie sie so, dass ein Authorization-Header mit dem Wert Bearer gefolgt vom API-Schlüssel Ihres Workspace gesendet wird. Speichern Sie den Schlüssel in den Zugangsdaten, nicht im Aufgaben-JSON.

Erstellungsanfrage konfigurieren

Nennen Sie den HTTP-Request-Knoten Create task. Der Polling-Knoten verweist auf diesen Namen, um die ursprüngliche Aufgaben-ID abzurufen.

Konfiguration des Knotens zur Aufgabenerstellung
Konfiguration des Knotens zur Aufgabenerstellung
FeldEinstellung
MethodePOST
URLhttps://api.solvethree.com/v1/tasks
AuthentifizierungGenerischer Zugangsdaten-Typ
Generischer AuthentifizierungstypHeader-Authentifizierung; wählen Sie die erstellten Zugangsdaten aus
Abfrageparameter sendenAktivieren; waitMs mit dem Wert 15000 hinzufügen
Anfragetext sendenAktivieren; JSON auswählen und den folgenden Anfragetext verwenden
reCAPTCHA Enterprise · Anfragestruktur
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://user:[email protected]:8080",
  "requestId": "example_login_001"
}

Ersetzen Sie site, action und proxy durch den Hostnamen, die Aktion und den Proxy für Ihre Anfrage. Senden Sie genau eines der Felder proxy oder proxyCandidates; dieses Beispiel verwendet einen Proxy. Fügen Sie weder type noch url hinzu. Der standardmäßige reCAPTCHA-Typ ist Enterprise v3.

Ersetzen Sie die beispielhafte requestId für jede neue logische Aufgabe durch einen eindeutigen Wert. Behalten Sie diesen Wert unverändert bei, wenn Sie diese Aufgabe nach einer Zeitüberschreitung wiederherstellen müssen. Zulässig sind 1–64 ASCII-Buchstaben, Ziffern, Unterstriche oder Bindestriche.

waitMs gehört in die URL-Abfrage, nicht in den JSON-Anfragetext. Setzen Sie das Zeitlimit der HTTP-Anfrage höher als die angeforderte Wartezeit von 15 Sekunden, um den Netzwerk-Overhead zu berücksichtigen; 30 Sekunden sind ein sinnvoller Ausgangswert, keine Garantie für die Lösungsdauer. Die Header-Auth-Zugangsdaten übernehmen die Authentifizierung, sodass Sie diese nicht zusätzlich unter „Header senden“ angeben müssen.

Nach Status verzweigen, nicht nach HTTP-Erfolg

Behandeln Sie nicht erfolgreiche HTTP-Antworten, bevor Sie die Aufgabendaten prüfen. Schließen Sie bei einer erfolgreichen Antwort einen IF- oder Switch-Knoten an und prüfen Sie {{ $json.status }}.

Leiten Sie sowohl Erstellungs- als auch Polling-Antworten durch diese Prüfungen
Leiten Sie sowohl Erstellungs- als auch Polling-Antworten durch diese Prüfungen
StatusNächster Schritt
readyVerlassen Sie die Polling-Schleife und verwenden Sie die Lösung.
failedBeenden Sie das Polling. Protokollieren Sie errorCode und error zur Diagnose.
pending oder solvingPrüfen Sie die Polling-Frist, warten Sie dann und rufen Sie die bestehende Aufgabe per GET ab.

Übermitteln Sie bei einer fertigen reCAPTCHA-Aufgabe das zurückgegebene Token unter Verwendung der zurückgegebenen Identität aus userAgent und secChUa sowie des erfolgreichen Proxys. Eine fertige Aufgabe bedeutet, dass eine Lösung generiert wurde; sie belegt nicht, dass die Website die nachfolgende Anfrage akzeptiert hat.

Fehlgeschlagene Lösungsversuche werden erstattet. Diagnostizieren Sie den gemeldeten Fehler, statt unveränderte Eingaben erneut zu senden oder anzunehmen, dass der Workspace nicht genügend Guthaben hat.

Warten, dann die ursprüngliche ID per GET abrufen

  1. 1.

    Eine feste Frist speichern

    Speichern Sie vor der Ausführung von Create task eine Polling-Frist im Workflow – beispielsweise zwei Minuten nach Beginn der Erstellung. Dies ist die Abbruchregel Ihres Workflows, kein Limit der solvethree-API. Speichern Sie die Frist außerhalb der HTTP-Antwort, damit spätere Antworten sie nicht überschreiben.

  2. 2.

    Jeden Polling-Durchlauf prüfen

    Vergleichen Sie bei ausstehenden oder in Bearbeitung befindlichen Aufgaben die aktuelle Zeit über einen IF-Knoten mit der gespeicherten Frist. Ist sie abgelaufen, beenden Sie die Schleife und behalten Sie die Aufgaben-ID. Andernfalls pausieren Sie mit einem Wait-Knoten für zwei Sekunden und prüfen die Frist vor dem GET erneut.

  3. 3.

    Die bestehende Aufgabe abrufen

    Konfigurieren Sie einen zweiten HTTP-Request-Knoten mit den folgenden Einstellungen. Leiten Sie seine Antwort wieder durch dieselbe Statusverzweigung. Führen Sie den Polling-Zweig niemals zurück zu Create task.

Konfiguration des HTTP-Request-Knotens für Polling
Konfiguration des HTTP-Request-Knotens für Polling
FeldEinstellung
MethodeGET
URLhttps://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }}
AuthentifizierungGenerischer Zugangsdaten-Typ
Generischer AuthentifizierungstypHeader-Authentifizierung; wählen Sie dieselben Zugangsdaten aus
Abfrageparameter sendenAktivieren; waitMs mit dem Wert 15000 hinzufügen
Anfragetext sendenDeaktivieren

Der Ausdruck für die Aufgaben-ID lautet {{ $('Create task').item.json.id }}. Er liest id aus dem benannten Erstellungsknoten, auch wenn das neueste Element eine Polling-Antwort oder andere Workflow-Daten enthält. Stellen Sie sicher, dass der Knotenname im Ausdruck mit dem in Ihrem Workflow übereinstimmt.

GET erlaubt eine Wartezeit von bis zu 15 Sekunden. Gewähren Sie dieser HTTP-Anfrage denselben Zeitpuffer wie der Erstellungsanfrage. Die Frist verhindert neue Polling-Versuche; eine bereits laufende Anfrage kann danach abgeschlossen werden.

Die entsprechende GET-Anfrage außerhalb von n8n lautet:

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"

Einen POST nach Zeitüberschreitung wiederherstellen, ohne eine weitere Aufgabe zu erstellen

Eine Verbindungszeitüberschreitung beweist nicht, dass die Erstellung fehlgeschlagen ist. Wenn Sie eine ID erhalten haben, rufen Sie diese Aufgabe ab. Andernfalls wiederholen Sie den POST mit denselben Aufgabeneingaben und derselben requestId, um die bestehende Aufgabe wiederherzustellen. Die Wiederverwendung dieser ID mit anderen Aufgabeneingaben führt zu einem Konflikt.

Ebenso ist das Erreichen Ihrer Polling-Frist eine lokale Abbruchbedingung, kein fehlgeschlagener Aufgabenstatus. Behalten Sie die ursprüngliche ID, damit eine spätere Ausführung die Aufgabe abrufen kann, statt für einen weiteren Lösungsversuch zu bezahlen.

Führe deinen ersten Task aus.

Starte mit $5 Workspace-Guthaben.

Workspace erstellen
Die CAPTCHA-Lösungs-API aus n8n aufrufen · solvethree