Die CAPTCHA-Lösungs-API aus n8n aufrufen
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.
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.
Header-Auth-Zugangsdaten in n8n erstellen
Konfigurieren Sie sie so, dass ein
Authorization-Header mit dem WertBearergefolgt 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.
| Feld | Einstellung |
|---|---|
| Methode | POST |
| URL | https://api.solvethree.com/v1/tasks |
| Authentifizierung | Generischer Zugangsdaten-Typ |
| Generischer Authentifizierungstyp | Header-Authentifizierung; wählen Sie die erstellten Zugangsdaten aus |
| Abfrageparameter senden | Aktivieren; waitMs mit dem Wert 15000 hinzufügen |
| Anfragetext senden | Aktivieren; JSON auswählen und den folgenden Anfragetext verwenden |
{
"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 }}.
| Status | Nächster Schritt |
|---|---|
| ready | Verlassen Sie die Polling-Schleife und verwenden Sie die Lösung. |
| failed | Beenden Sie das Polling. Protokollieren Sie errorCode und error zur Diagnose. |
| pending oder solving | Prü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.
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.
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.
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.
| Feld | Einstellung |
|---|---|
| Methode | GET |
| URL | https://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }} |
| Authentifizierung | Generischer Zugangsdaten-Typ |
| Generischer Authentifizierungstyp | Header-Authentifizierung; wählen Sie dieselben Zugangsdaten aus |
| Abfrageparameter senden | Aktivieren; waitMs mit dem Wert 15000 hinzufügen |
| Anfragetext senden | Deaktivieren |
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:
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.
Quellen und API-Referenz
Führe deinen ersten Task aus.
Starte mit $5 Workspace-Guthaben.