Wie man CAPTCHAs mit Cypress umgeht

Erfahren Sie, wie Sie mit CAPTCHAs in Cypress umgehen, einschließlich effektiver Umgehungsmethoden und was zu tun ist, wenn CAPTCHAs bestehen bleiben, um eine nahtlose Browser-Automatisierung zu gewährleisten.
9 min lesen
How to Bypass CAPTCHAs With Cypress blog image

In diesem Artikel erfahren Sie:

  • Was CAPTCHAs sind und ob sie umgangen werden können
  • Die Beziehung zwischen Cypress und CAPTCHAs
  • Wie man die CAPTCHA-Umgehungslogik von Cypress implementiert
  • Was zu tun ist, wenn das CAPTCHA weiterhin angezeigt wird

Lassen Sie uns loslegen!

Was ist ein CAPTCHA und lässt es sich automatisieren?

Ein CAPTCHA, kurz für „Completely Automated Public Turing tests to tell Computers and Humans Apart” (vollständig automatisierte öffentliche Turing-Tests zur Unterscheidung zwischen Computern und Menschen), ist eine Methode, um echte Benutzer von automatisierten Bots zu unterscheiden. Es handelt sich um eine Aufgabe, die für Menschen einfach zu lösen ist, für Maschinen jedoch eine Herausforderung darstellt. In der Regel werden CAPTCHAs in bestimmten Bereichen einer Webseite eingesetzt, um Bots fernzuhalten.

Google reCAPTCHA, hCaptcha und BotDetect sind die beliebtesten CAPTCHA-Anbieter. Diese unterstützen eine oder mehrere der folgenden Herausforderungen:

  • Textbasierte CAPTCHAs: Benutzer müssen eine Folge von verzerrten Buchstaben und/oder Zahlen eingeben.
  • Bildbasierte CAPTCHAs: Benutzer müssen bestimmte Objekte in einem Raster von Bildern identifizieren.
  • Audiobasierte CAPTCHAs: Benutzer werden aufgefordert, die Wörter einzugeben, die sie hören.
  • Puzzle-CAPTCHAs: Benutzer müssen eine einfache Frage beantworten oder ein einfaches Minispiel lösen, z. B. auf das richtige Element klicken.
Puzzle CAPTCHA example

CAPTCHAs können in bestimmte Benutzerabläufe integriert werden, um zu verhindern, dass Bots sie ausführen, z. B. beim Absenden eines Formulars:

captcha as a step of a form submission process example

In diesen Fällen wird das CAPTCHA immer angezeigt und kann nicht einfach durch automatisierte Logik umgangen werden. Sie können Ihre Software mit Bibliotheken für CAPTCHA-Lösungen integrieren oder Dienste nutzen, die sich auf menschliche Bediener verlassen, um diese Herausforderungen in Echtzeit zu lösen. Hardcodierte CAPTCHAs sind jedoch selten, da sie lästig sind und die Benutzererfahrung beeinträchtigen.

Häufiger sind CAPTCHAs Teil fortschrittlicherer Anti-Bot-Lösungen, wie z. B. WAFs (Web Application Firewalls):

Example-of-a-Web-Application-Firewall

Diese Lösungen zeigen dynamisch ein CAPTCHA an, wenn sie vermuten, dass es sich bei dem aktuellen Benutzer um einen Bot handelt. In solchen Fällen können CAPTCHAs umgangen werden, indem Sie Ihren Bot so verhalten lassen, als wäre er ein Mensch, und einen realen Browser verwenden. Dennoch handelt es sich hierbei um einen fortwährenden Kampf, der eine kontinuierliche Aktualisierung Ihres automatisierten Skripts erfordert, um mit den sich ständig weiterentwickelnden Maßnahmen zur Bot-Erkennung Schritt zu halten.

Eine effektivere Lösung zur Umgehung von CAPTCHAs ist die Verwendung eines benutzeremulationsbasierten Tools, das immer auf dem neuesten Stand ist, wie beispielsweise der CAPTCHA Solver von Bright Data.

CAPTCHAs und Cypress: Eine schlechte Beziehung

Cypress ist ein Frontend-Testtool, das für das moderne Web entwickelt wurde. Es kann zwar für allgemeine Browser-Automatisierungsaufgaben wie Web-Scraping verwendet werden, sein Hauptaugenmerk liegt jedoch auf End-to-End-Tests(E2E). Das bedeutet, dass es in erster Linie für die Interaktion mit Websites und Webseiten konzipiert ist, über die Sie die Kontrolle haben.

Wenn Sie Cypress für externe Websites oder Websites von Drittanbietern verwenden, treten Probleme auf. Wie in der offiziellen Dokumentation hervorgehoben, besteht die beste Vorgehensweise darin, die Interaktion mit Websites von Drittanbietern so weit wie möglich zu vermeiden. Einer der Hauptgründe, der in der Dokumentation hervorgehoben wird, ist insbesondere das Risiko, als Bot erkannt zu werden und ein CAPTCHA zu erhalten.

Warum ist das ein Problem? Nun, weil CAPTCHAs dazu dienen, automatisierte Skripte zu stoppen. Daher können sie den Betrieb Ihrer Cypress-Browser-Automatisierung behindern. Gleichzeitig ist es wichtig zu wissen, dass das Umgehen von CAPTCHAs in Cypress zwar schwierig, aber möglich ist. Mehr dazu erfahren Sie in den nächsten Abschnitten!

Umgang mit CAPTCHAs in Cypress

Wie Sie gerade erfahren haben, sind CAPTCHAs eine der größten Herausforderungen für Cypress, wie das Tool selbst in seiner Dokumentation einräumt. Es ist jedoch noch nicht an der Zeit, die weiße Flagge zu hissen. Lassen Sie uns einige mögliche Ansätze für die Implementierung einer Cypress-CAPTCHA-Umgehungslogik untersuchen!

Ansatz Nr. 1: Deaktivieren Sie die CAPTCHAs

CAPTCHA-Anbieter bieten in der Regel eine Möglichkeit, Herausforderungen in einer Testumgebung zu deaktivieren oder zu überspringen. Wenn Sie die Kontrolle über die Website haben, auf der Sie die Automatisierung durchführen müssen, sollten Sie den CAPTCHA-Mechanismus vollständig deaktivieren oder durch eine einfachere Version ersetzen.

Mit reCAPTCHA v3 können Sie beispielsweise einen separaten Schlüssel für Testumgebungen erstellen. Für reCAPTCHA v2 können Sie die folgenden Testschlüssel verwenden:

  • Website-Schlüssel: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
  • Geheimer Schlüssel: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Wenn Sie diese Schlüssel verwenden, erhalten Sie immer ein reCAPTCHA-Widget „No CAPTCHA” wie unten gezeigt:

Dieses zeigt eine spezielle Warnmeldung an, um sicherzustellen, dass es nicht in der Produktion verwendet wird. Automatisieren Sie den Klick auf dieses Kontrollkästchen, und die Anti-Bot-Überprüfung wird immer bestanden. Weitere Informationen finden Sie in der reCAPTCHA-Dokumentation.

Beachten Sie, dass andere CAPTCHA-Anbieter ähnliche Mechanismen anbieten.

Ansatz Nr. 2: Automatisieren Sie die CAPTCHA-Interaktion

Einige CAPTCHAs erfordern nur einfache Aktionen – wie das Anklicken eines Kontrollkästchens – wie im reCAPTCHA-Widget „No CAPTCHA”:

Simple clicking CAPTCHA example

Diese Herausforderungen mögen einfach erscheinen, können aber tatsächlich sehr komplex sein, da sie Ihre Mausbewegungen analysieren, um festzustellen, ob Sie ein Mensch sind. Allerdings sind nicht alle CAPTCHAs so komplex. Einige sind darauf ausgelegt, einfache Bots zu stoppen, und lassen sich leichter umgehen. In solchen Fällen können Sie versuchen, sie mit Hilfe von Cypress-Logik zu automatisieren.

Wenn Sie das CAPTCHA-Element aus dem obigen Beispiel untersuchen, werden Sie feststellen, dass es sich um einen Iframe handelt:

Inspecting the CAPTCHA element

Dies ist ein gängiges Verhalten der meisten CAPTCHA-Anbieter.

Beachten Sie, dass Cypress domänenübergreifende Iframes nicht automatisch verarbeiten kann. Um diese Einschränkung zu umgehen, setzen Sie die Eigenschaft chromeWebSecurity in der Datei cypress.json auf false:

{

"chromeWebSecurity": false

}

Anschließend können Sie das CAPTCHA-Kontrollkästchen auswählen und anklicken. Im Falle eines reCAPTCHA-Widgets „No CAPTCHA” lautet der Automatisierungscode dafür:

cy.get('iframe[src*=recaptcha]')

.its('0.contentDocument')

.should(d => d.getElementById('recaptcha-token').click())

Beachten Sie, dass dies nur eine Notlösung ist und in den meisten Fällen nicht funktioniert. CAPTCHAs sind mittlerweile so ausgeklügelt, dass sie zwischen Klicks von einem Roboter und einem Menschen unterscheiden können. Letztendlich ist genau das der Sinn und Zweck eines CAPTCHAs.

Die Automatisierung von CAPTCHAs ist ein Katz-und-Maus-Spiel, und was heute funktioniert, funktioniert morgen vielleicht nicht mehr. Die aktuellsten Ansätze finden Sie im GitHub-Gist, aus dem dieser Ansatz stammt.

Ansatz Nr. 3: Integrieren Sie einen Antibot-Browser

Die beiden vorherigen Ansätze zur Umgehung von Cypress-CAPTCHAs erfordern zu viele Annahmen, um gegen ein echtes Ziel eingesetzt zu werden. Eine effektivere Lösung besteht darin, Cypress so zu konfigurieren, dass es einen Anti-Detect-Browser steuert. Falls Sie mit diesem Tool nicht vertraut sind: Ein Anti-Detect-Browser ist ein spezieller Browser, der entwickelt wurde, um zu verhindern, dass Websites automatisiertes Verhalten erkennen.

Standardmäßig bietet Cypress Zugriff auf einen der lokal installierten Browser aus der folgenden Liste:

  • Chrome
  • Chrome Beta
  • Chrome Canary
  • Chromium
  • Edge
  • Edge Beta
  • Edge Canary
  • Edge Dev
  • Electron
  • Firefox
  • Firefox Developer Edition
  • Firefox Nightly
  • WebKit (experimentell)

Darüber hinaus unterstützt es alle Chromium-basierten Browser. Wählen Sie also einen Chromium-basierten Browser aus der Liste der besten Anti-Detect-Browser auf dem Markt aus, kaufen Sie ihn, laden Sie ihn herunter und installieren Sie ihn auf Ihrem Computer.

Anschließend können Sie Cypress anweisen, ein Skript mit dem angegebenen Browser wie folgt zu starten:

cypress open --browser <Pfad_zu_Ihrem_Browser>

Dabei ist <Pfad_zu_Ihrem_Browser> der absolute Pfad zu dem Ordner, der die Binärdatei Ihres Anti-Detect-Browsers enthält.

Ebenso können Sie die Cypress-Benutzeroberfläche so konfigurieren, dass Ihr Anti-Detect-Browser als auswählbare Option angezeigt wird, indem Sie den folgenden Code in cypress.config.js hinzufügen:

import { defineConfig } from 'cypress'

export default defineConfig({

e2e: {

setupNodeEvents(on, config) {

const antidetectBrowser = {

name: '<ANTIDETECT_BROWSER_NAME>',

channel: 'stable',

family: 'chromium',

displayName: '<ANTIDETECT_BROWSER_DISPLAY_NAME>',

version,

path: '<path_to_your_browser>',

majorVersion,

}

return {

browsers: config.browsers.concat(antidetectBrowser),

}

},

},

})

Beachten Sie, dass die Anweisung an Cypress, Ihren automatisierten Code in einem Anti-Detect-Browser auszuführen, nur die Wahrscheinlichkeit verringert, als Bot erkannt zu werden. Wenn die Anti-Bot-Systeme erkennen, dass Sie automatisierten Code ausführen, können sie dennoch einige CAPTCHAs durchsetzen, um Sie zu stoppen.

Die oben genannten Cypress-CAPTCHA-Umgehungslösungen funktionieren nicht: Was tun?

Alle drei oben vorgestellten Methoden haben einige gravierende Nachteile:

  • Ansatz Nr. 1: Sie benötigen Zugriff auf den Code der Zielwebsite, was bei externen Online-Websites nicht der Fall ist.
  • Ansatz Nr. 2: Er funktioniert nur bei sehr einfachen CAPTCHAs und ist keine zuverlässige Technik.
  • Ansatz Nr. 3: Sie müssen einen externen Dienst erwerben, möglicherweise müssen Sie zusätzliche Kosten für die Integration des Proxys aufwenden, und er hilft nur dabei, CAPTCHAs zu umgehen, nicht sie zu lösen.

Obwohl sie alle einen Versuch wert sind, ermöglicht keine davon, CAPTCHAs in Ihrer Cypress-Automatisierung programmgesteuert zu umgehen.

Suchen Sie nach einem echten Cypress-CAPTCHA-Bypasser? Probieren Sie die Web-Scraping-Lösungen von Bright Data aus!

Diese bieten dank einer speziellen CAPTCHA-Lösung zur automatischen Verarbeitung von reCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA und vielen anderen hervorragende Entsperrungsfunktionen.

Die Integration des CAPTCHA-Lösers von Bright Data in Ihr Skript ist einfach, da er mit jedem HTTP-Client oder Browser-Automatisierungstool funktioniert – einschließlich Cypress.

Erfahren Sie mehr über die Verwendung des Web Unlocker von Bright Data. Alle Details zur Integration und Konfiguration finden Sie in der Dokumentation.

Fazit

In diesem Artikel haben Sie etwas über CAPTCHAs gelernt und warum sie für Cypress eine große Herausforderung darstellen. Sie haben auch drei verschiedene Methoden kennengelernt, um sie zu umgehen, aber jeder dieser Ansätze hat erhebliche Einschränkungen.

Unabhängig davon, wie fortschrittlich Ihre Cypress-Bypass-CAPTCHA-Logik ist, können ausgeklügelte Bot-Erkennungssysteme Ihr Skript dennoch als automatisiert identifizieren. Die beste Lösung besteht darin, sich über eine Unlocking-API mit Ihrer Zielwebsite zu verbinden, die den CAPTCHA-freien HTML-Code jeder Webseite zurückgeben kann.

Eine solche API gibt es bereits und sie heißt Web Unlocker. Diese rotiert automatisch die Exit-IP bei jeder Anfrage über eine Proxy-Integration, verarbeitet Browser-Fingerabdrücke, führt automatische Wiederholungsversuche durch und löst CAPTCHAs für Sie. Anti-Bot-Maßnahmen sind kein Problem mehr!

Registrieren Sie sich jetzt und finden Sie heraus, welches Produkt von Bright Data Ihren Anforderungen am besten entspricht. Testen Sie es noch heute gratis.