Latenode

Strategien zum Umgehen des Cloudflare-Schutzes mit Puppeteer

Erfahren Sie, wie Sie Cloudflare-Schutzmechanismen mit Puppeteer ethisch umgehen können, einschließlich Proxy-Verwaltung und Simulation menschlichen Verhaltens.

4 Min. Lesezeit
Puppeteer-Automatisierung mit Proxy- und Browser-Schutzsymbolen

Die Sicherheitsmaßnahmen von Cloudflare erschweren Bots den Zugriff auf Websites. Mit Puppeteer können Sie diese Schutzmaßnahmen jedoch umgehen, sofern Sie dabei ethisch vorgehen. Hier ist eine kurze Anleitung für den Einstieg:

  • Kerntechniken:

    • Verwenden Sie residential Proxies und rotieren Sie diese, um eine Erkennung zu vermeiden.
    • Simulieren Sie menschliches Verhalten durch zufällige Verzögerungen und Mausbewegungen.
    • Bewältigen Sie JavaScript-Challenges und CAPTCHAs mit Plugins wie puppeteer-extra-plugin-recaptcha.
    • Verschleiern Sie die Automatisierung, indem Sie Browser-Fingerprints und User Agents anpassen.
  • Puppeteer-Einrichtung:

    • Installieren Sie Puppeteer und Plugins:

      npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
      
    • Fügen Sie Stealth-Einstellungen hinzu, um eine Erkennung zu vermeiden:

      const puppeteer = require('puppeteer-extra');
      const StealthPlugin = require('puppeteer-extra-plugin-stealth');
      puppeteer.use(StealthPlugin());
      
  • Rechtlicher Hinweis: Respektieren Sie stets die Nutzungsbedingungen von Websites, vermeiden Sie eine Überlastung von Servern und nutzen Sie Automatisierung verantwortungsvoll.

Diese Schritte können Ihre Erfolgsquote gegenüber den Schutzmechanismen von Cloudflare verbessern. Im Artikel finden Sie detaillierte Codebeispiele und fortgeschrittene Techniken.

Nodejs-Puppeteer-Tutorial Nr. 7 – Erkennung umgehen mit ...

Leitfaden zur Puppeteer-Einrichtung

Folgen Sie diesen Schritten, um Puppeteer mit benutzerdefinierten Einstellungen und Plugins zu konfigurieren und die Schutzmechanismen von Cloudflare zu umgehen.

Grundlegende Schritte zur Puppeteer-Installation

Stellen Sie zunächst sicher, dass Node.js v18 oder neuer installiert ist. Führen Sie anschließend den folgenden Befehl aus, um Puppeteer und die zugehörigen Plugins zu installieren:

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

Erstellen Sie als Nächstes eine neue JavaScript-Datei und importieren Sie die erforderlichen Module:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

Danach müssen Sie die Einstellungen für den Browserstart anpassen, um eine Erkennung zu vermeiden.

Erforderliche Puppeteer-Einstellungen

Richten Sie Ihre Browserinstanz mit Konfigurationen ein, die die Wahrscheinlichkeit einer Markierung verringern:

const browser = await puppeteer.launch({
    headless: false,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-position=0,0',
        '--ignore-certificate-errors',
        '--ignore-certificate-errors-spki-list'
    ]
});

Wenn Sie einen Proxy verwenden möchten, um Ihre IP-Adresse zu verschleiern, fügen Sie diese zusätzlichen Einstellungen hinzu:

const browser = await puppeteer.launch({
    args: [
        '--proxy-server=http://proxy-address:port'
    ]
});

await page.authenticate({
    username: 'proxy-username',
    password: 'proxy-password'
});

Nützliche Puppeteer-Erweiterungen

Erweitern Sie die Funktionalität von Puppeteer mit diesen Plugins:

Plugin-NameZweckWichtige Funktionen
puppeteer-extra-plugin-stealthSchutz vor ErkennungModifiziert Browser-Fingerprinting und simuliert menschliches Verhalten
puppeteer-extra-plugin-recaptchaCAPTCHA-VerarbeitungAutomatisiert das Lösen von CAPTCHAs
puppeteer-extra-plugin-adblockerRessourcenmanagementBlockiert Werbung und Tracker, um Erkennungsrisiken zu reduzieren

Um diese Erweiterungen zu integrieren, verwenden Sie den folgenden Code:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker');

puppeteer.use(StealthPlugin());
puppeteer.use(AdblockerPlugin({ blockTrackers: true }));

Damit Ihre Aktionen natürlicher wirken, fügen Sie abschließend zufällige Verzögerungen zwischen ihnen ein:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
await delay(Math.random() * 1000 + 1000); // Random delay between 1-2 seconds
sbb-itb-23997f1

Methoden zur Bewältigung der Cloudflare-Sicherheit

Ergänzen Sie Ihre Puppeteer-Einrichtung mit diesen Techniken, um die Schutzmaßnahmen von Cloudflare besser zu umgehen.

Verwaltung der Browseridentität

Das Anti-Bot-System von Cloudflare überwacht Browser-Fingerprints und Automatisierungssignale. Um die Aktivität von Puppeteer zu verschleiern, passen Sie Browserkennungen und -eigenschaften wie unten gezeigt an:

const browser = await puppeteer.launch({
    args: [
        '--window-size=1920,1080',
        '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
    ],
    ignoreDefaultArgs: ['--enable-automation']
});

await page.evaluateOnNewDocument(() => {
    delete navigator.webdriver;
    Object.defineProperty(navigator, 'plugins', {
        get: () => [1, 2, 3, 4, 5]
    });
});

Diese Konfiguration entfernt Automatisierungsindikatoren und simuliert einen Standard-Browser-Fingerprint, was dabei hilft, die Prüfungen von Cloudflare zu umgehen.

Lösungen für JavaScript-Challenges

Für die Bewältigung von JavaScript-Challenges von Cloudflare müssen Sie menschenähnliches Verhalten simulieren. Sie können beispielsweise warten, bis das Challenge-Formular verschwindet, und zufällige Verzögerungen zwischen Aktionen einführen:

// Wait until the Cloudflare challenge form is gone
await page.waitForFunction(() => {
    return document.querySelector('#challenge-form') === null;
}, { timeout: 30000 });

// Add random delays to simulate human interaction
const randomDelay = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min);
};
await page.waitForTimeout(randomDelay(1000, 3000));

Bei Bedarf können Sie außerdem benutzerdefinierte Handler erstellen, um das Nutzerverhalten noch besser nachzuahmen. Als Nächstes benötigen Sie eine Strategie für den Umgang mit CAPTCHAs.

Optionen für das CAPTCHA-Management

Wenn Sie auf CAPTCHAs stoßen, kann ein Plugin zum Lösen von CAPTCHAs den Prozess vereinfachen:

const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha');
puppeteer.use(
    RecaptchaPlugin({
        provider: {
            id: '2captcha',
            token: 'your-api-key'
        }
    })
);

Wenn das Plugin das CAPTCHA nicht lösen kann, können Sie als Ausweichlösung zur Proxy-Rotation wechseln:

try {
    await page.solveRecaptchas();
} catch (e) {
    // Rotate to a new proxy if CAPTCHA solving fails
    await page.setRequestInterception(true);
    await useNextProxy();
}

Diese Methoden helfen Ihnen, CAPTCHA-Herausforderungen zu bewältigen und den Zugriff aufrechtzuerhalten, selbst wenn Automatisierungstools auf Hindernisse stoßen.

Tipps und Richtlinien für zuverlässige Automatisierung

Die Umsetzung zuverlässiger Techniken ist entscheidend für erfolgreiche Automatisierung.

Proxy-Einrichtung und -Nutzung

Der Einsatz gut verwalteter Proxies kann Erkennungsrisiken deutlich reduzieren. Premium-residential Proxies bieten beispielsweise bessere Möglichkeiten zur Umgehung. Hier ist ein Einrichtungsbeispiel:

const browser = await puppeteer.launch({
    args: [
        `--proxy-server=${proxyAddress}`,
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
});

// Handle proxy authentication
await page.setRequestInterception(true);
page.on('request', request => {
    request.continue({
        headers: {
            ...request.headers(),
            'Proxy-Authorization': `Basic ${Buffer.from(
                `${proxyUsername}:${proxyPassword}`
            ).toString('base64')}`
        }
    });
});

Eine regelmäßige Rotation der Proxies trägt ebenfalls dazu bei, einen unterbrechungsfreien Zugriff aufrechtzuerhalten:

const proxyList = [
    'proxy1.example.com:8080',
    'proxy2.example.com:8080',
    'proxy3.example.com:8080'
];

function getNextProxy() {
    const proxy = proxyList.shift();
    proxyList.push(proxy);
    return proxy;
}

Steuerung des Anfragezeitpunkts

Die Simulation menschlichen Verhaltens kann Erkennungsrisiken minimieren. So können Sie die Zeitsteuerung von Anfragen effektiv verwalten:

const simulateHumanBehavior = async (page) => {
    // Add random mouse movements
    await page.mouse.move(100, 200);
    await page.mouse.move(150, 250, { steps: 10 });

    // Randomize typing speed
    await page.keyboard.type('Hello World', { 
        delay: Math.floor(Math.random() * (150 - 50) + 50) 
    });

    // Add pauses
    await page.waitForTimeout(
        Math.floor(Math.random() * (3000 - 1000) + 1000)
    );
};

Diese Techniken machen Automatisierungsbemühungen in Kombination mit einer ordnungsgemäßen Sitzungsverwaltung zuverlässiger.

Eine effektive Verwaltung von Cookies ist entscheidend, um die Kontinuität von Sitzungen aufrechtzuerhalten. So können Sie Sitzungen speichern und wiederherstellen:

// Store successful session cookies
const storeCookies = async (page) => {
    const cookies = await page.cookies();
    await fs.writeFile(
        'cookies.json',
        JSON.stringify(cookies, null, 2)
    );
};

// Restore previous session
const loadCookies = async (page) => {
    try {
        const cookiesString = await fs.readFile('cookies.json');
        const cookies = JSON.parse(cookiesString);
        await page.setCookie(...cookies);
    } catch (error) {
        console.log('No stored cookies found');
    }
};

Wenn die Validierung von Cookies fehlschlägt, können Sie sie automatisch aktualisieren:

const validateCookies = async (page) => {
    const response = await page.goto(targetUrl);
    if (response.status() === 403) {
        await clearCookies(page);
        await initializeNewSession(page);
    }
};

Fazit

Zum Abschluss heben wir die wichtigsten Techniken und Schritte hervor, die wir behandelt haben.

Zusammenfassung der wichtigsten Techniken

Das Umgehen des Cloudflare-Schutzes erfordert eine Kombination mehrerer Methoden. Zu den wichtigsten Strategien gehören:

  • Einsatz von residential Proxies mit ordnungsgemäßer Rotation
  • Verwaltung von Browser-Fingerprints und User Agents
  • Effektive Verwaltung von Cookies und Sitzungen
  • Simulation menschlichen Verhaltens durch zufällige Verzögerungen
  • Festlegen präziser Anfrage-Header
  • Korrekte Verwaltung der Authentifizierung

Laut Branchendaten kann die Kombination dieser Techniken bei optimierten Bedingungen zu Erfolgsquoten von bis zu 98,7 % führen [1].

Indem Sie sich auf diese Kernmethoden konzentrieren, können Sie einen zuverlässigen und regelkonformen Automatisierungsprozess aufbauen.

Schritte zur Umsetzung

Hier sind einige abschließende Tipps, um Ihre Puppeteer-Einrichtung und Ihre Bemühungen zur Umgehung von Cloudflare zu optimieren:

  • Beginnen Sie mit grundlegenden Puppeteer-Konfigurationen
  • Rotieren Sie Proxies mit Bedacht
  • Richten Sie robuste Mechanismen zur Fehlerbehandlung ein
  • Prüfen Sie vor dem Start die Nutzungsbedingungen der Zielwebsite
  • Halten Sie die Anfrageraten moderat, um Schutzmechanismen nicht auszulösen
  • Dokumentieren Sie Ihre Automatisierungs-Workflows

Puppeteer erfordert eine sorgfältige Einrichtung und regelmäßige Anpassungen, um gegenüber den sich weiterentwickelnden Schutzmaßnahmen von Cloudflare wirksam zu bleiben. Da Sicherheitsmaßnahmen immer fortschrittlicher werden, hängt der Erfolg von kontinuierlichen Aktualisierungen Ihrer Strategie und der strikten Einhaltung ethischer Praktiken ab. Zwar können anfängliche Konfigurationen gut funktionieren, doch für eine langfristig hohe Leistung müssen Sie flexibel bleiben und klare Richtlinien befolgen.

References

FAQ

Frequently Asked Questions

Der Artikel empfiehlt puppeteer-extra mit puppeteer-extra-plugin-stealth zur Anpassung des Browser-Fingerprints, puppeteer-extra-plugin-recaptcha für die CAPTCHA-Verarbeitung sowie puppeteer-extra-plugin-adblocker zum Blockieren von Werbung und Trackern, die das Erkennungsrisiko erhöhen können.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen