Ein CAPTCHA mitten im Ablauf bringt eine No-Code-Automatisierung in n8n zum Stillstand. CaptchaAI löst die Abfrage per API und liefert ein Token, das Ihr Workflow einsetzt.
Weil n8n Schleifen nativ beherrscht, bauen Sie den Ablauf – übermitteln, abfragen, einsetzen – ganz ohne externen Code und wiederholen die Statusabfrage automatisch, bis die Lösung vorliegt.
Warum n8n statt Zapier?
Für die CAPTCHA-Lösung entscheidet die Schleife: Eine Lösung ist nicht sofort fertig, Sie fragen den Status wiederholt ab – und das fällt Zapier schwer.
| Merkmal | n8n | Zapier |
|---|---|---|
| Schleifen/Wiederholung | Nativ (IF-Schleifen, Loop-Knoten) | Begrenzt (nur Pfade) |
| Selbst-Hosting | Ja (kostenlos) | Nein (nur Cloud) |
| Code-Knoten | Vollständiges JavaScript | Begrenzt |
| Kosten | Kostenlos (selbst gehostet) oder Cloud | Kostenpflichtig (pro Aufgabe) |
| Einrichtung | Mittel | Einfach |
Voraussetzungen
Für den Aufbau brauchen Sie drei Dinge:
- eine laufende n8n-Instanz (Cloud oder selbst gehostet)
- einen CaptchaAI-API-Schlüssel
- den
sitekeyund die URL der Zielseite
Der Workflow im Überblick
Der Zyklus besteht aus vier Schritten; das Polling in der Mitte wiederholt sich, bis CaptchaAI status: 1 meldet:
- CAPTCHA an
in.phpübermitteln - kurz warten, damit der Löser anläuft
- Ergebnis über
res.phpabfragen – in einer Schleife - Token an das Zielformular übergeben
Manual Trigger / Cron
↓
HTTP Request: Submit CAPTCHA
↓
Wait: 10 seconds
↓
Loop: Poll until solved
├── HTTP Request: Get result
├── IF: status == 1? → Exit loop
└── Wait: 5 seconds → Loop again
↓
HTTP Request: Use token
Knoten 1: CAPTCHA übermitteln
Legen Sie einen HTTP Request-Knoten an, der die Aufgabe an in.php schickt und eine Task-ID zurückbekommt. Konfigurieren Sie ihn so:
- Methode:
POST - URL:
https://ocr.captchaai.com/in.php - Body Content Type:
Form URL Encoded key:{{ $credentials.captchaaiApiKey }}(oder den Schlüssel fest hinterlegen)method:userrecaptchagooglekey:6Le-SITEKEYpageurl:https://example.comjson:1
Antwort:
{
"status": 1,
"request": "71823456"
}
Das Feld request liefert die Task-ID für das Polling.
Knoten 2: Wartezeit einplanen
Ein Wait-Knoten pausiert vor der ersten Abfrage – Wartezeit 10, Einheit Seconds. Fragen Sie zu früh ab, antwortet die API nur mit CAPCHA_NOT_READY.
Knoten 3: Ergebnis abfragen (mit Schleife)
n8n kennt zwei Wege für die Schleife: den Loop Over Items-Knoten oder den false-Ausgang eines IF-Knotens.
Option A: Einfache IF-Schleife
Ein HTTP Request-Knoten fragt das Ergebnis ab:
- Methode:
GET - URL:
https://ocr.captchaai.com/res.php - Abfrageparameter:
key,action=get,id={{ $json.request }},json=1
Ein nachgelagerter IF-Knoten vergleicht {{ $json.status }} per Equal mit 1:
- true – weiter zum Token-Einsatz
- false – Wait (5 Sekunden), zurück zum Polling-Knoten
Option B: Code-Knoten
Wer Timeout und Fehlerfälle feiner steuern will, kapselt das Polling in einem Code-Knoten:
const apiKey = 'YOUR_API_KEY';
const taskId = $input.first().json.request;
for (let i = 0; i < 24; i++) {
await new Promise(r => setTimeout(r, 5000));
const resp = await fetch(
`https://ocr.captchaai.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`
);
const data = await resp.json();
if (data.status === 1) {
return [{ json: { token: data.request, taskId } }];
}
if (data.request !== 'CAPCHA_NOT_READY') {
throw new Error(`CaptchaAI error: ${data.request}`);
}
}
throw new Error(`Task ${taskId} timed out`);
Die 24 Durchläufe decken zwei Minuten ab – genug für reCAPTCHA v2.
Knoten 4: Token einsetzen
Ein letzter HTTP Request-Knoten (POST, Form URL Encoded) sendet das Formular an Ihr Ziel. Ergänzen Sie Ihre Formulardaten um das gelöste Token:
g-recaptcha-response:{{ $json.token }}
Testen Sie diesen Schritt zuerst gegen eine eigene Staging-Umgebung wie https://staging.example-app.test/submit.
API-Schlüssel sicher hinterlegen
Hinterlegen Sie den Schlüssel über Credentials → Add Credential → Header Auth unter dem Namen CaptchaAI API Key – nie im Klartext im Knoten. Alternativ setzen Sie ihn als Umgebungsvariable:
# In your n8n environment
export CAPTCHAAI_API_KEY="your_key_here"
Im Knoten referenzieren Sie ihn dann mit {{ $env.CAPTCHAAI_API_KEY }}.
Bild-CAPTCHAs im selben Workflow
Für Bild-CAPTCHAs stellen Sie den Submit-Knoten um: method auf base64, im body das Base64-codierte Bild aus einem vorherigen Knoten. Eine Bild-URL wandeln Sie mit einem vorgeschalteten Code-Knoten nach Base64:
const imageUrl = $input.first().json.imageUrl;
const resp = await fetch(imageUrl);
const buffer = Buffer.from(await resp.arrayBuffer());
const base64 = buffer.toString('base64');
return [{ json: { imageBase64: base64 } }];
Guthaben automatisch überwachen
Ein zweiter, zeitgesteuerter Workflow prüft das Guthaben täglich und warnt in Slack oder per E-Mail:
Cron (daily at 9 AM)
↓
HTTP Request: GET res.php?action=getbalance
↓
IF: balance < 5
↓
Slack / Email: "CaptchaAI balance low: $X.XX"
Mehrere Aufgaben je Lauf trennen Sie mit dem Loop Over Items-Knoten auf. Wie viel parallel läuft, hängt an den Threads Ihres Tarifs: Bereits BASIC (15 $/Monat) enthält 5 gleichzeitige Threads mit unbegrenzten Lösungen im Monat – abgerechnet wird pro Thread, nicht pro CAPTCHA. Wer n8n selbst hostet, etwa auf einem Hetzner-Server im DACH-Raum, stimmt Instanz und Thread-Kontingent frei aufeinander ab.
Häufige Probleme und ihre Ursachen
| Problem | Ursache | Lösung |
|---|---|---|
| Polling-Schleife läuft endlos | Kein Iterationslimit | Zählervariable ergänzen und nach 24 Durchläufen abbrechen |
Dauerhaft CAPCHA_NOT_READY |
Erste Abfrage zu früh | Anfängliche Wartezeit auf 15–20 Sekunden erhöhen |
| Token im Folgeknoten leer | Falscher Ausdruckspfad | Prüfen, ob {{ $json.token }} zur Ausgabe passt |
| Anmeldedaten nicht gefunden | Umgebungsvariable nicht gesetzt | n8n nach dem Setzen der Variablen neu starten |
FAQ
Brauche ich Programmierkenntnisse für diesen Workflow?
Nein. Die Standardknoten HTTP Request, Wait und IF genügen; der Code-Knoten ist optional.
Welche CAPTCHA-Typen deckt CaptchaAI in n8n ab?
reCAPTCHA v2/v3 (auch Enterprise), Cloudflare Turnstile und Challenge, GeeTest v3 sowie Bild- und Raster-CAPTCHAs. Den Typ wählen Sie per Parameter method. hCaptcha und FunCaptcha werden nicht unterstützt.
Wie verhindere ich eine endlose Polling-Schleife?
Setzen Sie immer eine Obergrenze: im Code-Knoten die Zählschleife (24 Durchläufe), in der IF-Variante eine Zählervariable, die nach festen Iterationen stoppt.
Unterstützt der Workflow auch Cloudflare Turnstile?
Ja. Setzen Sie method auf turnstile und übergeben Sie den Wert als sitekey; das Token heißt dann cf-turnstile-response.
Bauen Sie die CAPTCHA-Lösung in Ihre n8n-Workflows ein
Holen Sie sich Ihren API-Schlüssel auf captchaai.com.
Verwandte Leitfäden
- Zapier + CaptchaAI ohne Code integrieren
- CaptchaAI API – Schnellstart
- Callback-URL und Webhook einrichten