Captcha in Make.com ohne Code-Schritt lösen

make.com captcha - How to Solve CAPTCHA in Make.com Without a Code Step

Ein Captcha-Schritt in Make.com besteht aus drei HTTP-Modulen und einem Sleep, ohne eine Zeile Code im Szenario. Challenge absenden, warten, abfragen, bis das Token zurückkommt, und es dann mit dem Formular verschicken. Was die meisten wirklich aufhält, ist nicht die Schleife. Es ist die Adresse: Ein Szenario läuft in der Cloud von Make.com, 127.0.0.1 ist dort also der Container von Make.com und nicht Ihr Schreibtisch, und das HTTP-Modul ruft nur eine HTTPS-URL mit einem Zertifikat auf, dem es vertraut. Wenn die Adresse stimmt, ist der Rest eine Viertelstunde Klicken.

Was Sie brauchen

  • Ein Make.com-Konto in einem beliebigen Tarif. Jedes hier verwendete Modul steckt in den eingebauten Apps HTTP, Tools und Flow control.
  • CapSkip läuft im Server-Modus auf einer Windows-Maschine, die Sie kontrollieren, und ist aus dem Internet erreichbar.
  • Ein Hostname, der auf diese Maschine zeigt, und ein öffentlich vertrauenswürdiges TLS-Zertifikat dafür.
  • Die Seiten-URL des geschützten Formulars und dessen sitekey.

Der Lokal-Modus und der Server-Modus sind beide beschrieben unter Verbindungseinstellungen. Der Lokal-Modus ist die richtige Wahl, wenn Ihre Automatisierung und der Löser sich eine Maschine teilen, und genau das kann ein Cloud-Szenario nicht.

Warum die Loopback-Adresse hier keine Option ist

Make.com-Szenarien laufen auf der Infrastruktur von Make.com, in einer von vier Zonen. Ihr Konto liegt auf us1, us2, eu1 oder eu2, und jede ausgehende Anfrage verlässt die veröffentlichten Egress-Adressen dieser Zone. Nichts auf diesem Weg berührt Ihr Netzwerk, eine Anfrage an 127.0.0.1 löst also innerhalb des Containers auf, der Ihr Szenario ausführt, und findet dort nichts, was lauscht.

Der Server-Modus ist die Antwort, und er ist kein anderes Produkt. Der Löser läuft weiterhin auf Ihrer Hardware, löst weiterhin ohne Gebühr pro Lösung und stellt weiterhin dieselben 2captcha-kompatiblen Endpoints bereit. Was sich ändert, ist das Interface, an das er bindet: Statt nur das lokale Gerät zu bedienen, antwortet er auf Ihrer Netzwerk- oder öffentlichen IP, sodass alles, was Adresse und Schlüssel hat, ihn aufrufen kann. Eine statische öffentliche IP sorgt dafür, dass diese Adresse nicht unter Ihnen wegwandert.

Diese veröffentlichte Egress-Liste ist auch in der anderen Richtung nützlich. Make.com dokumentiert die ausgehenden Adressen je Zone, Sie können also nur die Adressen Ihrer Zone durch die Firewall zum Port des Lösers durchlassen und alles andere verwerfen. Eingehende Adressen auf der Seite von Make.com sind dynamisch und werden nicht veröffentlicht, versuchen Sie also nicht, diese festzunageln.

Geben Sie dem Löser eine Adresse, die Make.com akzeptiert

Das ist die Anforderung, an der alle hängenbleiben, und sie ist zweimal Lesen wert. Das HTTP-Modul dokumentiert sein URL-Feld als HTTPS-Endpoint, und es weist Zertifikate zurück, die es nicht prüfen kann. Ein selbstsigniertes Zertifikat genügt nicht, und eine nackte IP-Adresse auf Port 8080 über einfaches HTTP genügt ebenso wenig.

Setzen Sie dem Löser also einen TLS-Terminator vor. Caddy ist unter Windows der kürzeste Weg, weil es ein echtes Zertifikat selbst anfordert und erneuert, und ein einziger Befehl ist die gesamte Konfiguration. Richten Sie zuerst einen Hostnamen auf die Maschine, dann starten Sie es.

# Fronts CapSkip on 8080 with a real certificate for the hostname.
# Ports 80 and 443 must reach this machine for the challenge.
caddy reverse-proxy --from solver.example.com --to 127.0.0.1:8080

Prüfen Sie es von Ihrer eigenen Maschine aus, bevor Sie Make.com anfassen. Wenn curl mit dem Zertifikat zufrieden ist, ist es das Szenario auch, und Sie haben die Fehlersuche gerade halbiert.

# Submit a reCAPTCHA v2 job. json=1 makes the reply JSON.
curl -s "https://solver.example.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=userrecaptcha" \
  -d "googlekey=YOUR_SITEKEY" \
  -d "pageurl=https://example.com/page-with-recaptcha" \
  -d "json=1"

# {"status":1,"request":"2122988149"}

Schritt 1: das Captcha absenden

Fügen Sie ein HTTP-Modul hinzu und wählen Sie die Aktion, die eine Anfrage stellt. Setzen Sie die Methode auf POST und die URL auf den in.php-Endpoint Ihres Lösers. Wählen Sie den URL-codierten Body-Typ und fügen Sie fünf Felder hinzu, dieselben fünf, die der curl-Aufruf oben sendet: den Schlüssel, den Methodennamen, den sitekey, die Seiten-URL und das JSON-Flag.

Schalten Sie die Option ein, die die Antwort parst. Ohne sie kommt die Antwort als einzelner String an, und Sie können nichts daraus mappen. Mit ihr bekommen Sie einen status und einen request-Wert, und der request-Wert ist bei einem erfolgreichen Absenden die Job-ID.

Der Methodenname wählt den Captcha-Typ aus. Nutzen Sie userrecaptcha für reCAPTCHA v2 und ergänzen Sie version=v3 für v3, turnstile für Cloudflare Turnstile, geetest für GeeTest v3 und base64 für ein inline gesendetes Bild-Captcha. Die vollständige Parameterliste zu jedem Typ steht in der CapSkip-API-Dokumentation.

Schritt 2: warten, bevor Sie abfragen

Fügen Sie ein Sleep-Modul aus der Tools-App hinzu. Eine reCAPTCHA-v2-Lösung dauert typischerweise fünfzehn bis fünfundvierzig Sekunden, sofort abzufragen verbraucht also nur eine Operation, um zu erfahren, dass die Antwort noch nicht bereit ist. Zwanzig Sekunden sind eine sinnvolle erste Wartezeit.

Sleep verzögert das Szenario um bis zu 300 Sekunden, also fünf Minuten, und diese Obergrenze ist der Grund, warum der nächste Schritt eine Schleife ist und keine einzelne lange Pause. Das ist bequem mehr, als eine einzelne Lösung braucht, aber Sie können damit nicht auf eine unbekannte Zahl von Wiederholungen warten.

Schritt 3: abfragen, bis das Token eintrifft

Make.com hat kein Modul, das auf eine Bedingung wartet, die Abfrage wird also aus einem Repeater und einem Filter gebaut. Der Repeater steckt in der App Flow control und ist ein Bundle-Generator: Sie geben ihm einen Startwert und eine Zahl von Durchläufen, und er gibt entsprechend viele Bundles aus, jedes mit einem Zähler namens i. Alles, was hinter ihm liegt, läuft einmal pro Bundle, und das ist Ihr Schleifenrumpf.

Setzen Sie die Durchläufe auf zehn. Hinter den Repeater kommen ein zweites Sleep von fünf Sekunden und ein zweites HTTP-Modul, das res.php mit der Job-ID aus Schritt 1 aufruft.

# The poll. Same key, the id from the submit, action=get.
curl -s "https://solver.example.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149&json=1"

# Still working:
# {"status":0,"request":"CAPCHA_NOT_READY"}
#
# Done:
# {"status":1,"request":"03AGdBq24PBCbwiDR..."}

Fügen Sie nun einen Filter an der Verbindung hinzu, die dieses Modul verlässt, und lassen Sie Bundles nur durch, wenn status gleich 1 ist. Alles nach dem Filter läuft damit genau einmal, nämlich bei der Abfrage, die erfolgreich war, und kein anderer Versuch kommt daran vorbei. Machen Sie sich klar, was das leistet und was nicht. Der Repeater gibt weiterhin jedes Bundle aus, das Sie bei ihm bestellt haben, die Schleife endet also nicht früher; früher endet das Warten, denn das Token wandert weiter, sobald eine Abfrage es findet. Das Token ist der request-Wert in diesem Bundle.

Eine Eigenschaft der API prägt diesen Aufbau und wird leicht übersehen. Ein Ergebnis lässt sich nur einmal lesen, die erste erfolgreiche Abfrage ist also die einzige, die Ihnen das Token je aushändigt. Mappen Sie es sofort in das, was danach kommt, statt res.php ein zweites Mal aufzurufen, um es erneut zu holen.

Dasselbe Muster aus Absenden und Abfragen taucht in jedem No-Code-Tool auf, und die Unterschiede liegen alle darin, was die Plattform drumherum vorgibt. Die selbst gehostete Variante dieses Ablaufs, bei der Automatisierung und Löser sich eine Maschine teilen können, steht im n8n-Captcha-Workflow-Leitfaden. Eine Plattform, bei der eine Obergrenze für die Schrittlaufzeit und nicht eine Sleep-Obergrenze die Form vorgibt, behandelt die Zapier-Anleitung.

Was die Schleife an Operationen kostet

Make.com rechnet in Operationen ab, und eine Operation ist ein Modullauf über ein Bundle. Ein Trigger zählt einmal, egal wie viel er zurückgibt, aber jedes Modul hinter dem Repeater läuft einmal pro Bundle, zehn Durchläufe aus einem Sleep plus einem HTTP-Aufruf sind also zwanzig Operationen, selbst wenn das Token beim zweiten Versuch eintrifft. Der Filter stoppt die Schleife nicht; er hält nur Bundles davon ab, an ihm vorbei weiterzulaufen.

Diese Zahl ist fest und nicht bloß typisch, und genau deshalb lohnen sich die beiden folgenden Angewohnheiten. Machen Sie das erste Sleep lang genug, dass die Antwort meistens schon bei der ersten oder zweiten Abfrage bereit ist, denn nur so können Sie überhaupt mit einer niedrigen Zahl von Durchläufen arbeiten. Und setzen Sie die Durchläufe auf den realistischen schlimmsten Fall statt auf einen bequemen: Zehn Durchläufe zu fünf Sekunden legen fünfzig Sekunden auf die erste Wartezeit obendrauf, und das reicht für v2 reichlich.

Das Lösen selbst wird überhaupt nicht abgerechnet. CapSkip läuft auf Ihrer eigenen Maschine, ein erneuter Versuch kostet Sie also nur die Operationen, die Make.com für die beteiligten Module zählt.

Schritt 4: das Token mit dem Formular senden

Was Sie mit dem Token machen, hängt vom Ziel ab. Wenn Sie ein Formular absenden, fügen Sie ein drittes HTTP-Modul hinzu und übergeben das Token als Feld g-recaptcha-response neben den echten Formularfeldern. Bei Turnstile heißt das Feld stattdessen cf-turnstile-response, und der Löser gibt zusätzlich den User-Agent zurück, den er verwendet hat und den eine Challenge-Seite in den Request-Headern sehen will.

Tokens laufen ab, und bei reCAPTCHA v2 beträgt das Fenster etwa zwei Minuten ab dem Moment, in dem die Lösung fertig ist. Setzen Sie das Submit-Modul unmittelbar hinter den Filter. Alles Langsame, etwa einen Datensatz zu holen oder ein Payload zu bauen, gehört vor die Lösung und nicht zwischen Lösung und Absenden. Beide Einreichungsarten und das Timing behandelt die reCAPTCHA-v2-Solver-Seite.

Häufige Fehler und was sie bedeuten

Was Sie sehenUrsacheBeheben
Ein Verbindungsfehler beim ersten ModulDer Löser liegt auf einer Loopback- oder privaten AdresseStellen Sie CapSkip auf den Server-Modus um und nutzen Sie einen öffentlichen Hostnamen
Ein Zertifikats- oder TLS-FehlerSelbstsigniertes Zertifikat oder einfaches HTTPSetzen Sie dem Löser ein öffentlich vertrauenswürdiges Zertifikat vor
Die Antwort kommt als ein einziger ungeparster String anDie Parse-Option ist am HTTP-Modul ausgeschaltetSchalten Sie sie ein und mappen Sie die Felder neu
ERROR_WRONG_USER_KEYDas key-Feld ist leer oder fehlerhaftPrüfen Sie den Wert, der in die Anfrage gemappt wird
ERROR_GOOGLEKEYEin leerer oder falscher sitekey ist beim Löser angekommenLesen Sie den sitekey erneut von der Live-Seite
CAPCHA_NOT_READY bei jedem DurchlaufDie Schleife ist kürzer, als das Lösen dauertErhöhen Sie das erste Sleep oder fügen Sie Durchläufe hinzu
Eine zweite Abfrage kommt ohne das Token zurückEin Ergebnis lässt sich nur einmal lesenMappen Sie es bei der erfolgreichen Abfrage, holen Sie es nicht erneut
Das Formular weist ein Token ab, das in Ordnung aussiehtEs ist abgelaufen, bevor das Absenden liefVerschieben Sie langsame Module vor die Lösung

FAQ

Kann das Szenario den Löser auf 127.0.0.1 erreichen?

Make.com ist ein gehostetes Produkt, eine selbst gehostete Edition gibt es nicht, die Loopback-Adresse gehört in einem Szenario also nie Ihnen. Wenn Ihre Automatisierung tatsächlich auf derselben Maschine läuft wie der Löser, dann beschreiben Sie ein anderes Werkzeug. Eine selbst gehostete n8n-Instanz hält den Verkehr auf dem lokalen Gerät, und dasselbe gilt für ein Skript auf Basis eines der CapSkip SDKs.

Ist es sicher, den Löser ins Internet zu stellen?

Ja, wenn Sie eingrenzen, wer ihn erreicht. Schalten Sie die Schlüsselvalidierung ein, damit eine nicht authentifizierte Anfrage abgewiesen wird, geben Sie dem Szenario einen eigenen Schlüssel, damit Sie ihn allein widerrufen können, und beschränken Sie die Firewall-Regel auf die veröffentlichten Egress-Adressen Ihrer Make.com-Zone. Der TLS-Terminator davor sorgt dafür, dass der Schlüssel nie im Klartext durch das Netz geht.

Warum nicht ein langes Sleep statt einer Schleife?

Weil ein einzelnes Sleep bei 300 Sekunden endet und weil Sie raten würden. Eine feste Wartezeit verbrennt entweder bei jedem Lauf echte Zeit oder geht bei den langsamen leer aus, und einen zweiten Versuch gibt sie Ihnen in beiden Fällen nicht. Der Repeater liefert Ihnen die Wiederholungen, und das Token erreicht das Submit-Modul, sobald eine Abfrage es findet, meistens die zweite. Die Schleife selbst läuft weiterhin ihre volle Zahl an Durchläufen, Sie gewinnen damit also Zuverlässigkeit und keine kleinere Rechnung.

Braucht das Szenario einen Proxy für die Lösung?

Meistens nicht. Proxy-Unterstützung gibt es für reCAPTCHA, Turnstile und GeeTest, und sie zählt, wenn die Zielseite das Token an die IP bindet, die es absenden wird. Bild-Captchas nehmen überhaupt keinen Proxy an. Ergänzen Sie die Proxy-Parameter am ersten HTTP-Modul, also an dem, das in.php aufruft, und auch nur dann, wenn Sie Tokens abgelehnt sehen, obwohl sie rechtzeitig ankommen.

Die Kurzfassung

Bringen Sie CapSkip in den Server-Modus, setzen Sie ihm einen Hostnamen und ein vertrauenswürdiges Zertifikat vor und verdrahten Sie dann vier Dinge im Szenario: ein HTTP-Submit, ein Sleep, einen Repeater mit einem Sleep und einer HTTP-Abfrage dahinter und einen Filter, der nur ein fertiges Ergebnis durchlässt. Ein Code-Schritt ist an keiner Stelle beteiligt. Derselbe Ablauf schrumpft in Python, Node.js, PHP oder C# auf einen einzigen Aufruf, und alle vier finden Sie auf der CapSkip-SDK-Seite.

Gut zu wissen, bevor Sie ein Szenario hochskalieren. Da CapSkip ein Captcha-Löser auf Hardware ist, die Ihnen bereits gehört, taucht die Zahl der Lösungen nie auf einer Rechnung auf. Das Einzige, was mit dem Volumen wächst, ist die Zahl der Operationen, die Make.com für die Module drumherum berechnet.