Für CaptchaAI gibt es in Make keine fertige App – und Sie brauchen auch keine. Zwei HTTP-Module, ein Sleep-Modul und ein Router genügen, um ein CAPTCHA mitten im Szenario lösen zu lassen und das Token weiterzureichen.
Der Ablauf ist schlicht: CaptchaAI nimmt Sitekey und Page-URL über in.php entgegen, antwortet mit einer Task-ID und stellt das Token unter res.php bereit. Nötig sind ein Make-Account mit Webhook-Rechten, ein API-Schlüssel aus dem Dashboard und ein freier Thread im Plan.
Hinweis: Die Modulnamen stehen hier auf Englisch, weil die Make-Oberfläche je nach Spracheinstellung abweicht. Alle Beispiele beziehen sich auf Formulare in eigenen oder freigegebenen Umgebungen.
Der Ablauf in vier Schritten
| Schritt | Modul in Make | Was dabei passiert |
|---|---|---|
| 1 | Webhook | Eine Anfrage mit Page-URL und reCAPTCHA-Sitekey trifft ein. |
| 2 | HTTP an in.php |
CaptchaAI nimmt die Aufgabe an und liefert eine Task-ID. |
| 3 | Sleep und HTTP an res.php |
Das Ergebnis wird abgefragt, bis das Token vorliegt. |
| 4 | Router | Das Token geht per Webhook-Antwort zurück oder direkt weiter. |
Ein Beispiel aus dem DACH-Raum: Ein Team betreibt seinen Shopware-Testshop auf einem Hetzner-Server und lässt nach jedem Deployment aus GitLab CI heraus ein Make-Szenario die Kontaktformulare durchklicken. Weil dort reCAPTCHA v2 aktiv ist, brach der Test bisher genau hier ab – statt den Schutz abzuschalten, holt die Pipeline nun das Token über den Webhook.
Schritt 1: Das Szenario in Make anlegen
Legen Sie ein neues Szenario mit fünf Modulen an: Webhook, zwei HTTP-Module, Sleep und Router.
Modul 1: Webhook als Einstiegspunkt
Fügen Sie das Modul Webhooks > Custom webhook ein, erstellen Sie über Add einen neuen Webhook und kopieren Sie dessen URL. Anschließend legen Sie die Datenstruktur der eingehenden Anfragen fest:
{
"sitekey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"pageurl": "https://example.com/form",
"captcha_type": "recaptcha_v2"
}
Modul 2: HTTP-Request – Aufgabe an CaptchaAI übergeben
Fügen Sie ein Modul HTTP > Make a request hinzu, Methode GET, URL https://ocr.captchaai.com/in.php, mit diesen Query-String-Parametern:
| Schlüssel | Wert |
|---|---|
key |
Ihr CaptchaAI-API-Schlüssel |
method |
userrecaptcha |
googlekey |
{{1.sitekey}} (aus dem Webhook zugeordnet) |
pageurl |
{{1.pageurl}} (aus dem Webhook zugeordnet) |
json |
1 |
Setzen Sie Parse response auf JSON, sonst kommt die Antwort als Rohtext an:
{
"status": 1,
"request": "TASK_ID_12345"
}
Für Cloudflare Turnstile ändert sich nur method=turnstile, und der Schlüssel steht im Feld sitekey.
Modul 3: Sleep – Wartezeit vor dem ersten Abruf
Fügen Sie ein Modul Tools > Sleep mit 15 Sekunden ein. reCAPTCHA v2 löst CaptchaAI typischerweise in unter 60 Sekunden; die Pause spart mehrere Leerabfragen und damit Operationen.
Modul 4: HTTP-Request – Ergebnis abfragen
Das zweite Modul HTTP > Make a request ruft GET https://ocr.captchaai.com/res.php auf:
| Schlüssel | Wert |
|---|---|
key |
Ihr CaptchaAI-API-Schlüssel |
action |
get |
id |
{{2.data.request}} (Task-ID aus Modul 2) |
json |
1 |
Modul 5: Router – auswerten und die Schleife begrenzen
Hängen Sie hinter das Abfrage-Modul einen Router mit zwei Routen:
| Route | Filterbedingung | Was danach passiert |
|---|---|---|
| CAPTCHA gelöst | {{4.data.status}} gleich 1 |
nächste Aktion: Webhook-Antwort, Datenbankeintrag oder Formularaufruf |
| noch nicht fertig | {{4.data.request}} gleich CAPCHA_NOT_READY |
zurück auf Modul 3 (Sleep) – so entsteht die Abfrageschleife |
Die Schleife braucht eine harte Obergrenze: Ein Modul Flow Control > Repeater mit Repeats: 10 und Initial value: {{2.data.request}} umschließt die Reihenfolge Sleep → Poll → Router und endet, sobald status = 1 zurückkommt. Sonst läuft das Szenario im Fehlerfall bis zur Laufzeitgrenze und verbraucht Operationen ohne Gegenwert.
Schritt 2: Das gelöste Token weiterverwenden
Das Token steht in {{4.data.request}}. Es ist nur rund 120 Sekunden gültig – verwenden Sie es direkt, statt es zwischenzuspeichern.
Der Regelfall: Token als Webhook-Antwort zurückgeben
Fügen Sie ein Modul Webhooks > Webhook response hinzu:
{
"token": "{{4.data.request}}",
"status": "solved"
}
Zwei weitere Anschlüsse sind gängig:
- Direkt ins Formular: Ein weiteres Modul HTTP > Make a request sendet die Formulardaten per
POSTan die Action-URL Ihrer eigenen Anwendung – inklusive des Feldesg-recaptcha-response: {{4.data.request}}. - Lösung protokollieren: Ein Modul für Google Sheets, Airtable oder eine Datenbank schreibt jede Lösung mit Zeitstempel und Task-ID mit – eine Operation extra, dafür auswertbare Laufzeiten und Fehlerquoten.
Das fertige Szenario auf einen Blick
[Webhook Trigger]
↓
[HTTP: Submit to CaptchaAI in.php]
↓
[Sleep: 15 seconds]
↓
[Repeater: 10 iterations]
↓ (each iteration)
[Sleep: 5 seconds]
[HTTP: Poll CaptchaAI res.php]
[Router]
Route 1 (solved) → [Use Token] → [Webhook Response]
Route 2 (not ready) → continue loop
Route 3 (error) → [Error Handler]
Fehler abfangen, bevor das Szenario stoppt
| Fehlercode | Bedeutung | Reaktion |
|---|---|---|
ERROR_ZERO_BALANCE |
Guthaben aufgebraucht | Konto aufladen, Handler auf Rollback setzen |
ERROR_WRONG_USER_KEY |
API-Schlüssel falsch übernommen | Schlüssel neu einfügen, Länge prüfen |
ERROR_CAPTCHA_UNSOLVABLE |
Sitekey oder Page-URL passen nicht zum Formular | Parameter am Webhook nachziehen |
| Netzwerkfehler, Timeout | Repeater ohne Ergebnis ausgelaufen | erneuter Versuch, Fall protokollieren |
Hinterlegt werden die Handler per Rechtsklick auf das jeweilige HTTP-Modul – Add error handler – mit Resume (überspringen) oder Rollback (abbrechen).
Was der Betrieb kostet
Make rechnet in Operationen: Jede Modulausführung zählt einzeln, ein Durchlauf kommt auf 5–15 Operationen. Eine zu knappe Sleep-Zeit bezahlen Sie doppelt – in Operationen und in Laufzeit.
CaptchaAI rechnet nach Threads ab, nicht pro Lösung; die Lösungen pro Thread sind im Plan unbegrenzt. Für ein einzelnes Szenario genügt BASIC (15 $/Monat, 5 Threads), bei parallelen Läufen passen STANDARD (30 $/Monat, 15 Threads) oder ADVANCE (90 $/Monat, 50 Threads). Alle Preise in US-Dollar.
Typische Probleme und ihre Ursachen
| Problem | Ursache | Lösung |
|---|---|---|
| Token erzeugt, aber vom Formular abgelehnt | Sitekey, Page-URL oder Session-Kontext passen nicht zusammen | Parameter erneut erfassen, Token in derselben Sitzung senden |
| Schleife läuft ins Timeout | Abfrageintervall oder Iterationsgrenze zu eng | Alle 5–10 Sekunden abfragen, Timeouts von echten Fehlercodes trennen |
ERROR_WRONG_USER_KEY trotz korrektem Schlüssel |
Leerzeichen oder Zeilenumbruch im kopierten Wert | Schlüssel neu einfügen, Länge von 32 Zeichen prüfen |
| Szenario bricht ohne Meldung ab | Laufzeitgrenze des Make-Tarifs erreicht | Wartezeiten kürzen oder Polling auslagern |
Häufige Fragen
Brauche ich Programmierkenntnisse für dieses Szenario?
Nein. Sie konfigurieren Module und tragen Parameter in Felder ein. Ein Grundverständnis für HTTP-Parameter hilft beim Debuggen, geschrieben wird kein Code.
Wie viele Threads benötigt mein Make-Szenario?
Einen Thread pro gleichzeitig laufender Ausführung. Arbeitet das Szenario nacheinander ab, reicht einer; bei parallelen Webhook-Ereignissen entsprechend mehr.
Kann ich das Szenario auch ohne Webhook starten?
Ja. Ein Zeitplan oder ein anderes Trigger-Modul funktioniert genauso, etwa eine Zeile aus Google Sheets. Nur die Zuordnung ändert sich: {{1.sitekey}} verweist dann auf das neue Trigger-Feld.
Worauf muss ich bei der DSGVO achten?
Sobald Ihr Szenario personenbezogene Daten verarbeitet – IP-Adressen zählen dazu –, brauchen Sie eine Rechtsgrundlage und einen dokumentierten Verarbeitungsweg. Testläufe gehören in Systeme, die Sie selbst betreiben oder für die Ihnen eine Freigabe vorliegt.
Verwandte Leitfäden
- CAPTCHA-Handling in n8n-Workflows
- CAPTCHAs in Power-Automate-Flows lösen
- Zapier mit CaptchaAI verbinden