Power Automate kann ein CAPTCHA nicht selbst bedienen – aber an einen Dienst weiterreichen, der es löst. Der Weg führt über den HTTP-Connector: Der Flow übergibt Sitekey und Page-URL an CaptchaAI, fragt das Ergebnis ab und setzt das Token in die Formularanfrage ein. Kein Browser, kein Skript, keine Erweiterung.
Diese Anleitung baut den Flow Schritt für Schritt auf – für reCAPTCHA v2, mit „Do until“-Polling und belastbarer Fehlerbehandlung.
Voraussetzungen
- Lizenz: Power Automate mit Premium-Connectors – die HTTP-Aktion gehört dazu
- API-Schlüssel: als Umgebungsvariable oder im Azure Key Vault, nie fest im Flow
- Zielformular: Sitekey und Page-URL der Zielseite
- Rechtsrahmen: geprüfte Berechtigung bzw. Nutzungsbedingungen
Praxisbeispiel: Lieferantenportal im Mittelstand
Ein Maschinenbauer aus Baden-Württemberg zieht nachts Lieferdaten aus dem Portal eines Zulieferers nach SharePoint. Weil der Login mit reCAPTCHA v2 geschützt ist, klickt bisher morgens jemand die Abfrage von Hand an. Diese Handarbeit übernimmt der Flow. Zur Sorgfaltspflicht: IP-Adressen und Zugangsdaten fallen unter die DSGVO – klären Sie Rechtsgrundlage und vertragliche Zulässigkeit, bevor der Flow produktiv läuft.
Schritt 1: Flow anlegen und Eingaben definieren
Legen Sie einen Sofort-Cloud-Flow mit einem manuellen Auslöser an und ergänzen Sie zwei Texteingaben. Als Parameter bleibt der Flow für viele Portale nutzbar:
| Eingabe | Bedeutung |
|---|---|
| sitekey | Sitekey des Zielformulars |
| pageurl | URL der Seite mit dem CAPTCHA |
Schritt 2: CAPTCHA-Aufgabe an CaptchaAI übermitteln
Fügen Sie eine HTTP-Aktion hinzu (Premium-Connector), Methode GET, URI https://ocr.captchaai.com/in.php.
Query-Parameter:
| Schlüssel | Wert |
|---|---|
key |
Ihr CaptchaAI-API-Schlüssel |
method |
userrecaptcha |
googlekey |
@{triggerBody()['text']} (Eingabe „sitekey“) |
pageurl |
@{triggerBody()['text_1']} (Eingabe „pageurl“) |
json |
1 |
Ohne json=1 kommt die Antwort als Text zurück. Hängen Sie direkt danach eine Aktion JSON analysieren an.
Schema:
{
"type": "object",
"properties": {
"status": { "type": "integer" },
"request": { "type": "string" }
}
}
Inhalt: @{body('HTTP')}
Schritt 3: Antwort der Übermittlung prüfen
Eine Bedingung trennt Erfolgs- und Fehlerfall: @{body('Parse_JSON')?['status']} ist gleich 1. Im Nein-Zweig beendet eine Aktion Beenden den Lauf mit dem Status „Fehlgeschlagen“ und der Meldung Submit error: @{body('Parse_JSON')?['request']}; so steht die Ursache im Laufprotokoll. Im Ja-Zweig geht es zur Schleife.
Schritt 4: Polling-Schleife mit „Do until“ bauen
Initialisieren Sie vorab zwei Variablen: solveStatus (String) mit dem Wert pending, solvedToken (String) leer. Schleifenbedingung: @{variables('solveStatus')} ist nicht gleich pending. In der Schleife folgen vier Aktionen in dieser Reihenfolge.
4a. Verzögerung
Eine Aktion Verzögerung mit 5 Sekunden. Kürzer bringt nichts: CaptchaAI löst reCAPTCHA v2 in der Regel in unter 60 Sekunden.
4b. HTTP – Ergebnis abfragen
Zweite HTTP-Aktion, GET auf https://ocr.captchaai.com/res.php.
Query-Parameter:
| Schlüssel | Wert |
|---|---|
key |
Ihr CaptchaAI-API-Schlüssel |
action |
get |
id |
@{body('Parse_JSON')?['request']} |
json |
1 |
4c. JSON analysieren – Antwort der Abfrage
Verwenden Sie dasselbe Schema wie in Schritt 2.
4d. Bedingung – Status auswerten
Bedingung: @{body('Parse_JSON_2')?['status']} ist gleich 1. Im Ja-Zweig setzen Sie solvedToken auf @{body('Parse_JSON_2')?['request']} und solveStatus auf solved. Im Nein-Zweig entscheidet eine zweite Bedingung: Ist derselbe Wert ungleich CAPCHA_NOT_READY, setzen Sie solveStatus auf error, sonst läuft die Schleife weiter.
Grenzen der Schleife:
| Grenze | Wert |
|---|---|
| Anzahl | 20 Iterationen |
| Timeout | PT3M (3 Minuten) |
Hinweis: Ohne diese Grenzen dreht die Schleife bei unerwarteten Fehlercodes weiter, bis das Zeitlimit greift.
Schritt 5: Gelöstes Token weiterverwenden
Nach der Schleife prüft eine Bedingung @{variables('solveStatus')}. Bei solved geht das Token per HTTP-POST an das Zielformular – oder an einen anderen Connector, etwa Teams:
| Einstellung | Wert |
|---|---|
| Methode | POST |
| URI | URL des Zielformulars |
| Body | {"g-recaptcha-response": "@{variables('solvedToken')}", "other_field": "value"} |
Timing zählt: Ein reCAPTCHA-Token ist rund 120 Sekunden gültig – senden Sie es direkt nach der Schleife ab. Im Fehlerfall benachrichtigt der Flow das Team.
Der CAPTCHA-Flow im Überblick
Alle Bausteine ergeben diese Kette:
[Manual Trigger (sitekey, pageurl)]
↓
[Initialize Variables: solveStatus, solvedToken]
↓
[HTTP: Submit to CaptchaAI /in.php]
↓
[Parse JSON]
↓
[Condition: status = 1?]
↓ Yes
[Do Until: solveStatus ≠ pending]
├── [Delay: 5 seconds]
├── [HTTP: Poll CaptchaAI /res.php]
├── [Parse JSON]
└── [Condition: Solved or Error?]
↓
[Condition: solveStatus = solved?]
↓ Yes
[HTTP: Submit form with token]
↓
[Compose: Success response]
Fehlerbehebung
Häufige Fehlläufe:
| Symptom | Ursache | Lösung |
|---|---|---|
| HTTP-Aktion fehlt | kein Premium-Connector | Lizenz erweitern oder Custom Connector |
| „JSON analysieren“ scheitert | Antwort ist Text | json=1 ergänzen |
| Schleife läuft ins Timeout | solveStatus bleibt pending |
Variablennamen exakt abgleichen |
| Token wird abgelehnt | Sitekey oder Page-URL passen nicht | Parameter neu erfassen |
| 403 von CaptchaAI | falscher Schlüssel oder IP-Sperre | Schlüssel und IP-Whitelist prüfen |
Häufige Fragen
Wie lange ist ein gelöstes Token gültig?
Rund 120 Sekunden. Lösen Sie das CAPTCHA direkt vor der Übermittlung und legen Sie keine Tokens auf Vorrat – abgelaufene Tokens lehnt das Zielformular meist ohne klare Meldung ab.
Wie viele CAPTCHAs kann ich parallel lösen lassen?
So viele, wie Ihr Tarif Threads enthält – CaptchaAI rechnet pro Thread ab, nicht pro Lösung:
- BASIC (15 $/Monat, 5 Threads) für einzelne Nacht-Flows
- ADVANCE (90 $/Monat, 50 Threads) für viele parallele Flows
Preise in US-Dollar.
In welchem Abstand sollte der Flow den Status abfragen?
Alle 5–10 Sekunden. Häufigere Abfragen beschleunigen nichts, verbrauchen aber Aktionskontingent; 20 Iterationen und PT3M reichen aus.
Was ist bei personenbezogenen Daten zu beachten?
Behandeln Sie den Flow wie jede andere Datenverarbeitung: Zweck und Rechtsgrundlage dokumentieren, Protokolle auf das Nötige beschränken und prüfen, ob die Nutzungsbedingungen des Portals automatisierten Zugriff zulassen.
Verwandte Leitfäden
- CAPTCHA-Handling in Make (Integromat)
- n8n-Workflows mit automatischer CAPTCHA-Lösung
- Zapier ohne Code an CaptchaAI anbinden