Une plateforme low-code alliant la simplicité du no-code à la puissance du full-code 🚀
Commencez gratuitement
Stratégies pour contourner la protection Cloudflare avec Puppeteer
26 mars 2025
6
min lire

Stratégies pour contourner la protection Cloudflare avec Puppeteer

Georges Miloradovitch
Chercheur, rédacteur et intervieweur de cas d'utilisation
Table des matières

CloudflareLes mesures de sécurité rendent difficile l'accès des robots aux sites web. Mais avec MarionnettisteVous pouvez contourner ces défenses si vous le faites de manière éthique. Voici un guide rapide pour commencer :

  • Techniques de base:
    • Utilisez procurations résidentielles et les faire pivoter pour éviter d'être détectés.
    • Imitez le comportement humain avec retards aléatoires et les mouvements de souris.
    • Poignée Défis JavaScript et les CAPTCHA en utilisant des plugins comme puppeteer-extra-plugin-recaptcha.
    • Masquer l'automatisation en peaufinant empreintes digitales du navigateur et les agents utilisateurs.
  • Configuration du marionnettiste:
    • Installer Puppeteer et les plugins :
      npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
      
    • Ajoutez des paramètres furtifs pour éviter la détection :
      const puppeteer = require('puppeteer-extra');
      const StealthPlugin = require('puppeteer-extra-plugin-stealth');
      puppeteer.use(StealthPlugin());
      
  • Rappel juridique: Respectez toujours les conditions d’utilisation du site Web, évitez de surcharger les serveurs et utilisez l’automatisation de manière responsable.

Ces étapes peuvent améliorer votre taux de réussite face aux protections Cloudflare. Consultez l'article pour découvrir des extraits de code détaillés et des techniques avancées.

nodejs Marionnettiste Tutoriel n°7 - Détection de contournement à l'aide de ...

Marionnettiste

Guide d'installation du marionnettiste

Suivez ces étapes pour configurer Puppeteer avec des paramètres et des plugins personnalisés pour naviguer dans les protections Cloudflare.

Étapes d'installation de base du marionnettiste

Tout d'abord, assurez-vous d'avoir Node.js La version 18 ou ultérieure est installée. Exécutez ensuite la commande suivante pour installer Puppeteer et ses extensions associées :

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

Ensuite, créez un nouveau fichier JavaScript et importez les modules nécessaires :

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

Après cela, vous devrez modifier les paramètres de lancement du navigateur pour éviter la détection.

Paramètres de marionnettiste requis

Configurez votre instance de navigateur avec des configurations qui réduisent le risque d'être signalé :

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'
    ]
});

Si vous souhaitez utiliser un proxy pour masquer votre IP, incluez ces paramètres supplémentaires :

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

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

Modules complémentaires utiles pour Puppeteer

Améliorez les fonctionnalités de Puppeteer avec ces plugins :

Nom Plugin Objectif Fonctionnalités clés
marionnettiste-extra-plugin-furtif Anti-détection Modifie l'empreinte digitale du navigateur et imite le comportement humain
marionnettiste-extra-plugin-recaptcha Gestion des CAPTCHA Automatise la résolution des CAPTCHA
marionnettiste-extra-plugin-adblocker La gestion des ressources Bloque les publicités et les trackers pour réduire les risques de détection

Pour intégrer ces modules complémentaires, utilisez le code suivant :

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 }));

Enfin, pour rendre vos actions plus naturelles, introduisez des délais aléatoires entre elles :

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

Méthodes de gestion Cloudflare Sécurité

Cloudflare

Améliorez votre configuration Puppeteer avec ces techniques pour mieux naviguer dans les défenses de Cloudflare.

Gestion de l'identité du navigateur

Le système anti-bot de Cloudflare surveille les empreintes digitales et les signaux d'automatisation du navigateur. Pour masquer l'activité de Puppeteer, modifiez les identifiants et les propriétés du navigateur comme indiqué ci-dessous :

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]
    });
});

Cette configuration supprime les indicateurs d'automatisation et imite une empreinte digitale de navigateur standard, aidant à contourner les contrôles de Cloudflare.

Solutions aux défis JavaScript

Relever les défis JavaScript de Cloudflare nécessite de simuler un comportement humain. Par exemple, vous pouvez attendre la disparition du formulaire de défi et introduire des délais aléatoires entre les actions :

// 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));

Vous pouvez également créer des gestionnaires personnalisés pour mieux imiter le comportement des utilisateurs, si nécessaire. Ensuite, vous aurez besoin d'une stratégie de gestion des CAPTCHA.

Options de gestion CAPTCHA

Face aux CAPTCHA, l'utilisation d'un plugin de résolution de CAPTCHA peut simplifier le processus :

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

Si le plugin ne parvient pas à résoudre le CAPTCHA, vous pouvez passer à la rotation du proxy en guise de solution de secours :

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

Ces méthodes vous aident à surmonter les défis CAPTCHA et à maintenir l’accès, même lorsque les outils d’automatisation rencontrent des obstacles.

Conseils et directives en matière de fiabilité

La mise en œuvre de techniques fiables est essentielle pour garantir le succès de l’automatisation.

Configuration et utilisation du proxy

L'utilisation de proxys bien gérés peut contribuer à réduire considérablement les risques de détection. Par exemple, les proxys résidentiels premium offrent de meilleures capacités de contournement. Voici un exemple de configuration :

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')}`
        }
    });
});

La rotation régulière des proxys permet également de maintenir un accès ininterrompu :

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;
}

Contrôle du temps de demande

Simuler un comportement humain peut minimiser les risques de détection. Voici comment gérer efficacement le timing des requêtes :

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)
    );
};

Ces techniques, combinées à une gestion appropriée des sessions, rendent les efforts d’automatisation plus fiables.

Une gestion efficace des cookies est essentielle pour assurer la continuité des sessions. Voici comment stocker et restaurer les sessions :

// 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');
    }
};

Si les cookies échouent à la validation, vous pouvez les actualiser automatiquement :

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

Conclusion

Terminons en soulignant les principales techniques et étapes que nous avons abordées.

Récapitulatif des techniques clés

Pour contourner la protection Cloudflare, il faut combiner des méthodes efficaces. Les stratégies les plus importantes sont les suivantes :

  • Utilisation de proxys résidentiels avec une rotation appropriée
  • Gestion des empreintes digitales du navigateur et des agents utilisateurs
  • Gérer efficacement les cookies et les sessions
  • Imiter le comportement humain avec des délais aléatoires
  • Définition d'en-têtes de requête précis
  • Gérer correctement l'authentification

Selon les données de l’industrie, la combinaison de ces techniques peut conduire à des taux de réussite pouvant atteindre 98.7 % lorsque les conditions sont optimisées.

En vous concentrant sur ces méthodes de base, vous pouvez créer un processus d’automatisation fiable et conforme.

Étapes de mise en œuvre

Voici quelques conseils finaux pour affiner votre configuration Puppeteer et vos efforts de contournement de Cloudflare :

  • Commencez par les configurations de base du marionnettiste
  • Faites tourner les procurations de manière réfléchie
  • Mettre en place des mécanismes solides de gestion des erreurs
  • Vérifiez les conditions d'utilisation du site cible avant de commencer
  • Maintenez les taux de demande modérés pour éviter de déclencher les défenses
  • Documentez vos flux de travail d'automatisation

Puppeteer nécessite une configuration minutieuse et des ajustements réguliers pour rester efficace face aux défenses Cloudflare en constante évolution. À mesure que les mesures de sécurité se perfectionnent, le succès dépendra de la mise à jour régulière de votre stratégie et du strict respect des pratiques éthiques. Si les configurations initiales peuvent être efficaces, le maintien de performances à long terme implique de rester flexible et de suivre des directives claires.

articles similaires

Blogs connexes

Cas d'utilisation

Soutenu par