Latenode

Stratégies pour contourner la protection Cloudflare avec Puppeteer

Découvrez des techniques efficaces pour contourner de manière éthique les protections Cloudflare avec Puppeteer, notamment la gestion des proxys et la simulation du comportement humain.

5 min de lecture
Navigateur automatisé avec Puppeteer face à la protection Cloudflare

Les mesures de sécurité de Cloudflare compliquent l’accès des bots aux sites web. Mais avec Puppeteer, vous pouvez contourner ces défenses si vous le faites de manière éthique. Voici un guide rapide pour démarrer :

  • Techniques clés :

    • Utilisez des proxies résidentiels et effectuez une rotation pour éviter la détection.
    • Imitez le comportement humain avec des délais aléatoires et des mouvements de souris.
    • Gérez les défis JavaScript et les CAPTCHAs avec des plugins tels que puppeteer-extra-plugin-recaptcha.
    • Masquez l’automatisation en ajustant les empreintes du navigateur et les agents utilisateurs.
  • Configuration de Puppeteer :

    • Installez 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 des sites 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 de Cloudflare. Consultez l’article pour découvrir des extraits de code détaillés et des techniques avancées.

Tutoriel Nodejs Puppeteer n°7 - Contourner la détection avec ...

Guide de configuration de Puppeteer

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

Étapes d’installation de base de Puppeteer

Commencez par vérifier que Node.js v18 ou une version plus récente est installé. Exécutez ensuite la commande suivante pour installer Puppeteer et ses plugins associés :

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

Créez ensuite 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 ajuster les paramètres de lancement du navigateur afin d’éviter la détection.

Paramètres requis pour Puppeteer

Configurez votre instance de navigateur avec des paramètres 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 adresse 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

Renforcez les fonctionnalités de Puppeteer avec ces plugins :

Nom du pluginObjectifFonctionnalités clés
puppeteer-extra-plugin-stealthAnti-détectionModifie l’empreinte du navigateur et imite le comportement humain
puppeteer-extra-plugin-recaptchaGestion des CAPTCHAAutomatise la résolution des CAPTCHA
puppeteer-extra-plugin-adblockerGestion des ressourcesBloque les publicités et les traqueurs 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 pour gérer la sécurité de Cloudflare

Améliorez votre configuration Puppeteer avec ces techniques afin de mieux naviguer face aux défenses de Cloudflare.

Gestion de l’identité du navigateur

Le système anti-bot de Cloudflare surveille les empreintes de navigateur et les signaux d’automatisation. Pour masquer l’activité de Puppeteer, ajustez les identifiants et 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 de navigateur standard, ce qui aide à contourner les vérifications de Cloudflare.

Solutions aux défis JavaScript

La gestion des défis JavaScript de Cloudflare exige de simuler un comportement humain. Par exemple, vous pouvez attendre que le formulaire de défi disparaisse 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 selon vos besoins. Vous aurez ensuite besoin d’une stratégie pour gérer les CAPTCHAs.

Options de gestion des CAPTCHA

Face aux CAPTCHAs, 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 recourir à la rotation des proxies :

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 à gérer les défis CAPTCHA et à maintenir l’accès, même lorsque les outils d’automatisation rencontrent des obstacles.

Conseils et recommandations pour la fiabilité

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

Configuration et utilisation des proxies

L’utilisation de proxies bien gérés peut réduire considérablement les risques de détection. Par exemple, les proxies 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 proxies contribue également à 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 rythme des requêtes

La simulation d’un comportement humain peut réduire les risques de détection. Voici comment gérer efficacement le rythme 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, associées à une gestion appropriée des sessions, rendent les efforts d’automatisation plus fiables.

Gestion des cookies et des sessions

La gestion efficace des cookies est essentielle pour maintenir la continuité des sessions. Voici comment stocker et restaurer des 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

Concluons en mettant en avant les principales techniques et étapes abordées.

Récapitulatif des techniques clés

Contourner la protection de Cloudflare nécessite une combinaison de méthodes qui fonctionnent ensemble. Les stratégies les plus importantes comprennent :

  • L’utilisation de proxies résidentiels avec une rotation appropriée
  • La gestion des empreintes de navigateur et des agents utilisateurs
  • La gestion efficace des cookies et des sessions
  • L’imitation du comportement humain avec des délais aléatoires
  • La définition d’en-têtes de requête précis
  • La gestion correcte de l’authentification

Selon les données du secteur, la combinaison de ces techniques peut permettre d’atteindre des taux de réussite allant jusqu’à 98,7 % lorsque les conditions sont optimisées [1].

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

Étapes de mise en œuvre

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

  • Commencez par les configurations de base de Puppeteer
  • Effectuez une rotation réfléchie des proxies
  • Mettez en place des mécanismes robustes de gestion des erreurs
  • Vérifiez les conditions d’utilisation du site cible avant de commencer
  • Maintenez un rythme de requêtes modéré afin d’éviter de déclencher les défenses
  • Documentez vos workflows d’automatisation

Puppeteer nécessite une configuration soignée et des ajustements réguliers pour rester efficace face aux défenses Cloudflare en constante évolution. À mesure que les mesures de sécurité deviennent plus avancées, la réussite dépendra de mises à jour continues de votre stratégie et du strict respect de pratiques éthiques. Si les configurations initiales peuvent fonctionner correctement, maintenir des performances à long terme implique de rester flexible et de suivre des recommandations claires.

References

FAQ

Frequently Asked Questions

L’article recommande puppeteer-extra avec puppeteer-extra-plugin-stealth pour modifier l’empreinte du navigateur, puppeteer-extra-plugin-recaptcha pour gérer les CAPTCHA, ainsi que puppeteer-extra-plugin-adblocker pour bloquer les publicités et les traqueurs susceptibles d’augmenter le risque de détection.

Cela vous a aidé ? Partagez-le →

Écrit par

Vasiliy Datsenko

Responsable du support client

Vasiliy Datsenko est responsable du support client chez Latenode et un rédacteur en automatisation axé sur les produits. Son travail relie les conversations clients, la recherche sur l'automatisation des flux de travail, les cas d'utilisation de l'IA et la formation pratique sur les produits pour les équipes cherchant à automatiser des processus métier réels.

Profil de l'auteur →

Vérifié par

Oleg Zankov

PDG de Latenode, expert en no-code

Avec une philosophie ancrée dans l'innovation, la résolution de problèmes et l'expérience utilisateur, je me consacre à donner aux équipes les moyens de créer des intégrations sur mesure et d'automatiser les workflows avec facilité et efficacité. Fort d'une riche expérience en développement commercial, entrepreneurship technologique et développement logiciel, j'ai reconnu le besoin d'une solution d'intégration plus accessible, évolutive et adaptable. Ainsi est né Latenode.com. Grâce à notre plateforme, les entreprises peuvent exploiter la puissance de la technologie sans nécessiter de compétences approfondies en codage. Passionné par la création d'un avenir où la technologie nous sert, et non l'inverse, ma mission est de simplifier les processus complexes. Je crois en la démocratisation de la technologie et en dotant les équipes des outils nécessaires pour innover, croître et réussir dans un monde de plus en plus numérique.

Profil de l'auteur →

Continuer la lecture