So umgehen Sie CAPTCHAs mit Cypress

Entdecken Sie, wie Sie CAPTCHAs in Cypress handhaben können, einschließlich effektiver Umgehungsmethoden und was zu tun ist, wenn CAPTCHAs weiterhin angezeigt werden, um eine nahtlose Browserautomatisierung zu gewährleisten.
9 min read
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 CAPTCHA-Umgehungslogik in Cypress implementiert
  • Was zu tun ist, wenn das CAPTCHA weiterhin angezeigt wird

Lassen Sie uns eintauchen!

Was ist ein CAPTCHA und ist es möglich, es zu automatisieren?

Ein CAPTCHA, das für „Completely Automated Public Turing tests to tell Computers and Humans Apart“ steht, ist eine Methode, um echte Benutzer von automatisierten Bots zu unterscheiden. Es ist eine Herausforderung, die für Menschen einfach zu lösen ist, aber für Maschinen schwierig. Normalerweise werden CAPTCHAs in bestimmten Teilen einer Webseite verwendet, 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 Sequenz verzerrter 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, wie z.B. auf die richtige Entität klicken.
Puzzle CAPTCHA example

CAPTCHAs können in spezifische Benutzerflüsse integriert werden, um zu verhindern, dass Bots diese abschließen, wie z.B. das Einreichen 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 CAPTCHA-Lösungsbibliotheken integrieren oder Dienste nutzen, die sich auf menschliche Bediener verlassen, um diese Herausforderungen in Echtzeit zu lösen. Harte 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 WAFs (Web Application Firewalls):

Example-of-a-Web-Application-Firewall

Diese Lösungen zeigen dynamisch ein CAPTCHA an, wenn sie vermuten, dass der aktuelle Benutzer ein Bot sein könnte. In solchen Fällen können CAPTCHAs vermieden werden, indem Ihr Bot sich wie ein Mensch verhält und einen echten Browser verwendet. Dies ist jedoch ein fortlaufender Kampf, der eine kontinuierliche Aktualisierung Ihres automatisierten Skripts erfordert, um immer weiterentwickelte Bot-Erkennungsmaßnahmen zu bewältigen.

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

CAPTCHAs und Cypress: Eine schlechte Beziehung

Cypress ist ein Front-End-Testtool, das für das moderne Web entwickelt wurde. Während es für allgemeine Browserautomatisierungsaufgaben wie Web-Scraping verwendet werden kann, liegt der Hauptfokus auf End-to-End (E2E)-Tests. Das bedeutet, dass es hauptsächlich dafür entwickelt wurde, mit Websites und Webseiten zu interagieren, über die Sie die Kontrolle haben.

Verwenden Sie Cypress, um externe oder Drittanbieter-Websites anzuzielen, und Probleme beginnen aufzutreten. Wie in der offiziellen Dokumentation hervorgehoben, ist es am besten, die Interaktion mit Drittanbieter-Websites so weit wie möglich zu vermeiden. Einer der Hauptgründe, die in den Dokumenten hervorgehoben werden, ist speziell das Risiko, als Bot erkannt zu werden und ein CAPTCHA zu erhalten.

Warum ist das ein Problem? Nun, weil CAPTCHAs dazu entwickelt wurden, automatisierte Skripte zu stoppen. Daher können sie Ihre Cypress-Browserautomatisierungsoperation behindern. Gleichzeitig ist es wichtig zu beachten, dass das Umgehen von CAPTCHAs in Cypress schwierig, aber möglich ist. Erfahren Sie mehr in den nächsten Abschnitten!

Wie man CAPTCHAs in Cypress handhabt

Wie Sie gerade erfahren haben, sind CAPTCHAs eine der Hauptherausforderungen von Cypress, wie vom Tool selbst in seiner Dokumentation anerkannt. Es ist jedoch noch nicht an der Zeit, die weiße Fahne zu hissen. Lassen Sie uns einige potenzielle Ansätze zur Implementierung der CAPTCHA-Umgehungslogik in Cypress erkunden!

Ansatz #1: Deaktivieren der 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 insgesamt deaktivieren oder durch eine einfachere Version ersetzen.

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

  • Site-Schlüssel: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
  • Geheimschlüssel: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Während Sie diese Schlüssel verwenden, erhalten Sie immer ein reCAPTCHA „No CAPTCHA“-Widget wie unten:

Dies 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-Verifizierung wird immer bestanden. Erfahren Sie mehr in der reCAPTCHA-Dokumentation.

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

Ansatz #2: Automatisieren der CAPTCHA-Interaktion

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

Simple clicking CAPTCHA example

Diese Herausforderungen mögen einfach erscheinen, können jedoch tatsächlich komplex sein und Ihre Mausbewegungen analysieren, um festzustellen, ob Sie ein Mensch sind. Trotzdem sind nicht alle CAPTCHAs so komplex. Einige sind darauf ausgelegt, grundlegende Bots zu stoppen und sind einfacher zu umgehen. In solchen Fällen können Sie versuchen, sie mit etwas Cypress-Logik zu automatisieren.

Wenn Sie das CAPTCHA-Element aus dem obigen Beispiel inspizieren, werden Sie sehen, dass es ein iframe ist:

Inspecting the CAPTCHA element

Dies ist ein häufiges Verhalten der meisten CAPTCHA-Anbieter.

Beachten Sie, dass Cypress nicht automatisch mit cross-domain iframes umgehen kann. Um diese Einschränkung zu überwinden, setzen Sie die chromeWebSecurity-Eigenschaft in der cypress.json-Datei auf false:

{
  "chromeWebSecurity": false
}

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

cy.get('iframe[src*=recaptcha]')
  .its('0.contentDocument')
  .should(d => d.getElementById('recaptcha-token').click())

Denken Sie daran, dass dies nur ein Workaround ist und in den meisten Situationen nicht funktioniert. CAPTCHAs sind mittlerweile so ausgeklügelt, dass sie zwischen Klicks von einem Roboter und einem Menschen unterscheiden können. Am Ende des Tages ist genau das der Zweck eines CAPTCHAs.

Das Automatisieren von CAPTCHAs ist ein Katz-und-Maus-Spiel, und was heute funktioniert, funktioniert morgen möglicherweise nicht mehr. Für die aktuellsten Ansätze schauen Sie sich das GitHub-Gist an, von dem dieser Ansatz stammt.

Ansatz #3: Integration eines Anti-Bot-Browsers

Die beiden vorherigen Cypress CAPTCHA-Umgehungsansätze erfordern zu viele Annahmen, um gegen ein echtes Ziel verwendet zu werden. Eine effektivere Lösung besteht darin, Cypress so zu konfigurieren, dass es einen Anti-Detect-Browser steuert. Wenn Sie mit diesem Tool nicht vertraut sind, ist ein Anti-Detect-Browser ein spezialisierter 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 auf Chromium basierenden Browser. Wählen Sie also einen auf Chromium basierenden Browser aus der Liste der besten Anti-Detect-Browser auf dem Markt, kaufen Sie ihn, laden Sie ihn herunter und installieren Sie ihn auf Ihrem Computer.

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

cypress open --browser <path_to_your_browser>

Wo <path_to_your_browser> der absolute Pfad zum Ordner ist, der das Binary Ihres Anti-Detect-Browsers enthält.

Ebenso können Sie die Cypress-UI 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 verstehen, dass Sie automatisierten Code ausführen, können sie dennoch einige CAPTCHAs erzwingen, um Sie zu stoppen.

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

Alle drei oben vorgestellten Methoden haben einige große Nachteile:

  • Ansatz #1: Er erfordert, dass Sie Zugriff auf den Code der Zielseite haben, was nicht der Fall ist, wenn Sie mit externen Online-Seiten arbeiten.
  • Ansatz #2: Er funktioniert nur gegen sehr einfache CAPTCHAs und ist keine zuverlässige Technik.
  • Ansatz #3: Er erfordert den Kauf eines externen Dienstes, möglicherweise müssen Sie zusätzliches Geld für die Proxy-Integration ausgeben, und er hilft nur, CAPTCHAs zu vermeiden, nicht sie zu lösen.

Obwohl sie alle einen Versuch wert sind, erlauben sie es Ihnen nicht, CAPTCHAs programmatisch in Ihrer Cypress-Automatisierung zu umgehen.

Auf der Suche nach einem echten Cypress CAPTCHA-Umgeher? Probieren Sie die Web-Scraping-Lösungen von Bright Data!

Diese bieten überlegene Entsperrfähigkeiten dank einer speziellen CAPTCHA-Lösungsfunktion, um reCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA und viele andere automatisch zu handhaben.

Die Integration von Bright Data’s CAPTCHA Solver in Ihr Skript ist einfach, da es mit jedem HTTP-Client oder Browserautomatisierungstool – einschließlich Cypress – funktioniert.

Sie sich auch die Dokumentation für alle Integrations- und Konfigurationsdetails an.

Fazit

In diesem Artikel haben Sie über CAPTCHAs und warum sie eine erhebliche Herausforderung für Cypress darstellen, erfahren. Sie haben auch drei verschiedene Methoden zur Umgehung von CAPTCHAs erkundet, aber jede dieser Ansätze hat ernsthafte Einschränkungen.

Egal wie fortschrittlich Ihre Cypress CAPTCHA-Umgehungslogik ist, ausgeklügelte Bot-Erkennungssysteme könnten Ihr Skript dennoch als automatisiert identifizieren. Die beste Lösung besteht darin, sich über eine Entsperr-API mit Ihrer Zielseite zu verbinden, die das CAPTCHA-freie HTML jeder Webseite zurückgeben kann.

Eine solche API existiert und heißt Web Unlocker. Diese rotiert automatisch die Exit-IP bei jeder Anfrage über die Proxy-Integration, handhabt Browser-Fingerprinting, führt automatische Wiederholungen durch und löst CAPTCHAs für Sie. Anti-Bot-Maßnahmen sind kein Kopfschmerz mehr!

Registrieren Sie sich jetzt und sehen Sie, welches der Produkte von Bright Data am besten zu Ihren Bedürfnissen passt. Beginnen Sie noch heute mit einer kostenlosen Testversion.

Keine Kreditkarte erforderlich