Tutorials

n8n + CaptchaAI: Workflow zur CAPTCHA-Lösung ohne Code

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 sitekey und 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:

  1. CAPTCHA an in.php übermitteln
  2. kurz warten, damit der Löser anläuft
  3. Ergebnis über res.php abfragen – in einer Schleife
  4. 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: userrecaptcha
  • googlekey: 6Le-SITEKEY
  • pageurl: https://example.com
  • json: 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
  • falseWait (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

Kommentare sind für diesen Artikel deaktiviert.