Wie man CAPTCHAs mit Puppeteer umgeht

Lernen Sie, CAPTCHAs mit Puppeteer mithilfe von Stealth-Plugins und fortgeschrittenen Techniken für eine nahtlose Automatisierung zu umgehen.
8 min lesen
How to bypass CAPTCHAs with Puppeteer blog image

In diesem Leitfaden erfahren Sie:

  • Was CAPTCHAs sind und ob Sie sie umgehen können
  • Wie Sie mit Puppeteer CAPTCHAs umgehen können – Schritt für Schritt erklärt
  • Was zu tun ist, wenn der Prozess mit Puppeteer nicht funktioniert

Lassen Sie uns loslegen!

Was sind CAPTCHAs? Und kann man sie umgehen?

Ein CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) ist ein Challenge-Response-Test, der Menschen von automatisierten Bots unterscheidet. Um ihr Ziel zu erreichen, sind CAPTCHAs so konzipiert, dass sie für Menschen leicht zu lösen, für Software jedoch schwierig sind.

Beliebte CAPTCHA-Anbieter sind Google reCAPTCHA, hCaptcha und BotDetect. Gängige CAPTCHA-Typen sind:

  • Textbasiert: Bei diesen Herausforderungen müssen Benutzer Buchstaben und Zahlen erkennen und eingeben.
  • Bildbasiert: Bei diesen Tests müssen Benutzer bestimmte Objekte in einem Raster von Bildern identifizieren, indem sie die richtigen Bilder auswählen.
  • Audiobasiert: Bei dieser Art müssen Benutzer die Buchstaben schreiben, die sie hören.
  • Puzzle-Herausforderungen: Bei dieser Art von Herausforderung müssen Benutzer ein einfaches Puzzle lösen, indem sie ein Teil an die dafür vorgesehene Stelle schieben.

CAPTCHAs sind so konzipiert, dass sie von automatisierter Software und Bots nur schwer umgangen werden können. Sie können also Ihre Software mit CAPTCHA-Lösungen oder -Diensten integrieren, die sich auf menschliche Bediener stützen, um diese Herausforderungen zu automatisieren und zu lösen.

Hardcodierte CAPTCHAs sind jedoch nicht üblich, da sie sich negativ auf die allgemeine Benutzererfahrung auf der Website auswirken. Aus diesem Grund werden CAPTCHAs häufiger als Teil umfassenderer Anti-Bot-Lösungen wie WAFs (Web Application Firewalls) eingesetzt:

A CAPTCHA on G2 generated by Cloudflare

In diesen Fällen zeigt das System dynamisch ein CAPTCHA an, wenn der Verdacht besteht, dass ein Bot auf der Website aktiv ist. Um diese CAPTCHAs zu umgehen, müssen Sie einen Bot entwickeln, der menschliches Verhalten nachahmt. Das ist zwar möglich, erfordert jedoch einen hohen Aufwand, insbesondere weil Sie Ihre Skripte häufig aktualisieren müssen, um neuen Bot-Erkennungstechniken und -methoden immer einen Schritt voraus zu sein.

Die gute Nachricht ist, dass es eine effektivere Lösung zur Umgehung von CAPTCHAs gibt: den CAPTCHA Solver von Bright Data! Dieses stets aktuelle Tool löst alle Ihre Probleme im Zusammenhang mit der Umgehung von CAPTCHAs ohne Kopfzerbrechen.

So umgehen Sie CAPTCHAs mit Puppeteer: Schritt-für-Schritt-Anleitung

Jetzt ist es an der Zeit, ein automatisiertes Skript zu erstellen, das menschliches Verhalten nachahmt, um CAPTCHAs zu umgehen.

Dazu können Sie Puppeteer verwenden: eine JavaScript-Bibliothek, die eine hochentwickelte API zur Steuerung von Webbrowsern bereitstellt und somit zur Nachahmung menschlichen Verhaltens verwendet werden kann.

Legen wir los!

Schritt 1: Projekt einrichten

Angenommen, Sie nennen den Hauptordner Ihres Projekts bypass_captcha_puppeteer. Hier ist die Struktur, die das Repository haben sollte:

bypass_captcha_puppeteer/
├── index.js
└── package.json

Sie können Folgendes erstellen:

mkdir bypass_captcha_puppeteer

Wechseln Sie dann in den Projektordner und starten Sie npm init, um eine Node.js-Anwendung zu initialisieren:

cd bypass_captcha_puppeteer
npm init -y

Erstellen Sie als Nächstes eine Datei index.js darin.

Installieren Sie Puppeteer wie folgt:

npm install puppeteer

Schritt 2: Verwenden Sie die ESM-Javascript-Notation

Um die ECMAScript-Modulnotation in Javascript zu verwenden, muss die Datei package.json die Option „type”: „module” enthalten.

So sollte die Datei „package.json” aussehen:

{
  "name": "bypass_captcha_puppeteer",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "puppeteer": "^23.10.4"
  }
}

Schritt 3: Versuchen Sie, CAPTCHA mit Puppeteer zu umgehen

Schreiben Sie den folgenden Code in die Datei index.js, um zu sehen, ob Puppeteer als Bot angezeigt wird oder nicht:

import puppeteer from 'puppeteer';

const visitBotAnalyzerPage = async () => {
  try {
    // Initialisieren Sie den Browser.
    const browser = await puppeteer.launch();

    // Öffnen Sie eine neue Browserseite.
    const page = await browser.newPage();

    // Navigieren Sie zur Ziel-URL.
    const url = 'https://bot.sannysoft.com/';
    console.log(`Navigieren zu ${url}...`);
    await page.goto(url, { waitUntil: 'networkidle2' });
    
    // Vollbild-Screenshot speichern
    console.log('Vollbild-Screenshot wird erstellt...');
    await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
    console.log('Screenshot erstellt');
    
    // Browser schließen
    await browser.close();
    console.log('Browser geschlossen');
  } catch (error) {
    console.error('Ein Fehler ist aufgetreten:', error);
  }
};

// Skript ausführen
visitBotAnalyzerPage();

Das macht dieser Code:

  1. Startet den Browser: Die Methode puppeteer.launch() startet eine neue Browserinstanz mit sichtbarer Benutzeroberfläche (headless: false).
  2. Öffnet eine neue Browserseite: browser.newPage() erstellt eine neue leere Browserseite, auf der weitere Aktionen durchgeführt werden können.
  3. Wechselt zur Zielseite: Die Methode page.goto() leitet zur Zielseite weiter, bei der es sich um Intoli.com tests handelt, eine Seite, die dazu dient, zu erkennen, ob eine Anfrage von einem Bot stammt oder nicht.
  4. Speichert einen Screenshot der Ergebnisse: Die Methode page.screenshot() erstellt einen Screenshot der Ergebnisse und speichert ihn.
  5. Schließt den Browser und behandelt Fehler: Die Methode browser.close() schließt den Browser und fängt eventuelle Fehler ab.

Um den Code auszuführen, geben Sie Folgendes ein:

node index.js

Sie können nun das gespeicherte Bild öffnen. Dies ist das erwartete Ergebnis:

The expected result

Wie das Bild zeigt, hat Puppeteer einige Tests nicht bestanden. Daher werden WAFs wahrscheinlich CAPTCHAs anzeigen, wenn sie mit Seiten mit Puppeteer interagieren.

Um diese Probleme zu lösen, verwenden wir Puppeteer Stealth!

Schritt 4: Installieren Sie das Stealth-Plugin

Puppeteer Extra ist ein leichtgewichtiger Wrapper um Puppeteer, mit dem Sie unter anderem das Stealth-Plugin installieren können, das die Erkennung von Bots verhindert, indem es mehrere Konfigurationen überschreibt, um die Browser-Instanz natürlich und „menschlich“ erscheinen zu lassen.

Installieren Sie diese Bibliotheken wie folgt:

npm install puppeteer-extra puppeteer-extra-plugin-stealth

Importieren Sie Puppeteer aus puppeteer-extra anstelle von puppeteer:

import puppeteer from 'puppeteer-extra';

Fantastisch! Sie können nun das Stealth-Plugin verwenden, um CAPCHAs mit Puppeteer zu umgehen.

Schritt 5: Wiederholen Sie den Test mit dem Stealth-Plugin

Jetzt müssen Sie das Stealth-Plugin mit dieser Codezeile implementieren:

puppeteer.use(StealthPlugin()).

Der Code lautet nun also:

import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';

// Fügen Sie das Stealth-Plugin zu Puppeteer hinzu.
puppeteer.use(StealthPlugin());

const visitBotAnalyzerPage = async () => {
  try {
    // Starten Sie den Browser mit Stealth-Einstellungen.
    const browser = await puppeteer.launch();
    console.log('Browser wird im Stealth-Modus gestartet...');
    
    // Neue Seite öffnen
    const page = await browser.newPage();

    // Zur Zielseite navigieren
    const url = 'https://bot.sannysoft.com/';
    console.log(`Navigieren zu ${url}...`);
    await page.goto(url, { waitUntil: 'networkidle2' });

    // Screenshot der gesamten Seite speichern
    console.log('Vollseitigen Screenshot erstellen...');
    await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
    console.log(`Screenshot erstellt`);

    // Browser schließen
    await browser.close();
    console.log('Browser geschlossen. Skript erfolgreich abgeschlossen');
  } catch (error) {
    console.error('Fehler aufgetreten:', error);
  }
};

// Skript ausführen
visitBotAnalyzerPage();

Wenn Sie den Code nun erneut mit folgendem Befehl ausführen:

node index.js

Das erwartete Ergebnis lautet:

The final expected result after running the code

Hurra! Das Skript besteht nun die Bot-Erkennungstests, was bedeutet, dass Sie mit Puppeteer weniger wahrscheinlich CAPTCHAs erhalten!

Was tun, wenn das oben beschriebene Verfahren zum Umgehen von CAPTCHAs mit Puppeteer nicht funktioniert?

Leider ist Puppeteer Extra nicht immer die beste Lösung. Der Grund dafür ist, dass Browser-Einstellungen nicht die einzige Möglichkeit sind, mit der Anti-Bots automatisierte Software blockieren.

Beispielsweise ist der User Agent ein weiterer Faktor, den Anti-Bot-Systeme zum Blockieren automatisierter Software verwenden. Um dieses Problem zu lösen, können Sie die Bibliothek puppeteer-extra-plugin-anonymize-ua verwenden, die den User Agent anonymisiert.

Der zuvor beschriebene Ansatz auf Basis von Plugins funktioniert jedoch nur gegen einfache Anti-Bot-Maßnahmen: Bei komplexeren Tools wie Cloudflare benötigen Sie etwas Leistungsfähigeres.

Also… Suchen Sie nach einem echten Playwright-CAPTCHA-Löser? Probieren Sie die Web-Scraping-Lösungen von Bright Data aus!

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

Die Integration des CAPTCHA-Lösers von Bright Data in Ihre Skripte ist einfach, da er mit jedem HTTP-Client oder Browser-Automatisierungstool funktioniert.

Erfahren Sie mehr über die Verwendung des CAPTCHA-Lösers von Bright Data und lesen Sie die Dokumentation für alle Details zur Integration und Konfiguration.

Fazit

In diesem Artikel haben Sie erfahren, warum es schwierig sein kann, CAPTCHAs mit Puppeteer zu umgehen, und wie Sie das Stealth-Plugin verwenden können, um die Standardkonfiguration des Browsers zu überschreiben und die Bot-Erkennung zu umgehen.

Das Problem bei diesem Ansatz ist, dass er nur in einfachen Szenarien funktioniert. Fortgeschrittene Bot-Erkennungssysteme können Sie dennoch als Bot identifizieren und blockieren.

Die eigentliche Lösung zum Umgehen von CAPTCHAs besteht also darin, sich über eine Entsperr-API mit Ihrer Zielseite zu verbinden, die nahtlos den CAPTCHA-freien HTML-Code jeder Webseite zurückgeben kann. Diese Lösung gibt es und sie heißt Web Unlocker. Ihr Ziel ist es, die Exit-IP bei jeder Anfrage über eine Proxy-Integration automatisch zu rotieren, Browser-Fingerprinting, automatische Wiederholungsversuche und CAPTCHA-Lösung für Sie zu übernehmen.

Melden Sie sich jetzt an, um herauszufinden, welches der Scraping-Produkte von Bright Data Ihren Anforderungen am besten entspricht.

Starten Sie mit dem Gratis-Test!