Latenode

Automatisation invisible : utiliser puppeteer-extra-plugin-stealth pour contourner la protection anti-bot

Découvrez comment utiliser efficacement des techniques d’automatisation furtive pour contourner les systèmes de détection de bots lors de la navigation.

8 min de lecture
Illustration d’une automatisation furtive avec Puppeteer face à des systèmes de détection anti-bot

Vous souhaitez contourner les systèmes de détection des bots tout en automatisant Chrome ? Le puppeteer-extra-plugin-stealth est un outil qui permet de masquer les empreintes de l’automatisation, rendant plus difficile la détection des bots par les sites web.

Points clés :

  • Ce qu’il fait : masque les indicateurs d’automatisation (comme navigator.webdriver) et imite le comportement d’un vrai navigateur.
  • Comment il fonctionne : ajuste les empreintes du navigateur, introduit des habitudes de navigation naturelles et gère les détails des sessions.
  • Pourquoi c’est important : aide à éviter la détection par des systèmes anti-bot avancés tels que les défis CAPTCHA et l’empreinte du navigateur.
  • Configuration : installez Puppeteer, puppeteer-extra et le plugin stealth via npm ou Yarn. Utilisez le plugin stealth pour configurer votre navigateur afin qu’il se comporte comme un véritable utilisateur.

Exemple rapide :

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

puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://bot.sannysoft.com');
  await browser.close();
})();

Cet outil est idéal pour automatiser des tâches sur des sites web dotés d’une détection stricte des bots. Découvrez comment l’installer, optimiser ses paramètres et simuler un comportement humain pour éviter d’être détecté.

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

Installation et configuration

Pour commencer, vous devrez installer les packages nécessaires et les configurer afin de réduire la détection pendant l’automatisation. Cette section couvre le processus d’installation, la configuration initiale et les tests pour vérifier que tout fonctionne comme prévu.

Installation des packages requis

Installez d’abord Puppeteer, Puppeteer Extra et le plugin Stealth. Ouvrez votre terminal et exécutez la commande suivante :

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

Si vous utilisez Yarn, utilisez plutôt cette commande :

yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

Étapes de configuration initiale

Après l’installation, configurez votre fichier JavaScript pour intégrer le plugin stealth. Voici le code nécessaire :

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

puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://nowsecure.nl/');
  await browser.close();
})();

Important : assurez-vous d’importer Puppeteer depuis 'puppeteer-extra' plutôt que depuis 'puppeteer' afin d’accéder aux fonctionnalités ajoutées [2].

Une fois la configuration terminée, il est temps de vérifier que tout fonctionne correctement.

Tester votre installation

Exécutez ces tests pour confirmer que votre configuration fonctionne comme prévu :

  • Test de fonctionnalité de base : essayez de naviguer vers un site qui détecte les bots et examinez les résultats.
  • Vérification par capture d’écran : réalisez une capture d’écran de la page de test pour confirmer que les fonctionnalités stealth sont correctement appliquées.
  • Vérification du score reCAPTCHA : observez vos scores reCAPTCHA v3 pour déterminer si des améliorations sont constatées.

Pour une vérification rapide, utilisez le script suivant :

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://bot.sannysoft.com');
  await page.waitForTimeout(5000);
  await page.screenshot({ path: 'stealth-test.png' });
  await browser.close();
})();

Ce script prend une capture d’écran de la page de test. Consultez-la pour vérifier si votre navigateur se comporte comme un navigateur Chrome standard, sans révéler de signes d’automatisation.

Une fois que votre configuration réussit ces tests, vous êtes prêt à découvrir les fonctionnalités avancées du plugin, présentées dans la section suivante.

Principales fonctionnalités stealth

Le puppeteer-extra-plugin-stealth utilise plusieurs techniques pour rendre la navigation automatisée plus difficile à détecter.

Masquage de l’identité du navigateur

Le plugin modifie les principales propriétés du navigateur afin d’imiter un navigateur Chrome classique. Cela comprend :

  • Le remplacement de l’user-agent HeadlessChrome par défaut par une version plus naturelle
  • La définition d’en-têtes Accept-Language réalistes
  • L’ajustement de la prise en charge des codecs pour la lecture des médias
  • La modification de navigator.vendor pour correspondre au comportement standard de Chrome

Ces changements contribuent à créer un profil de navigateur qui ressemble à celui d’un utilisateur classique, et non à un bot. En complément, le plugin utilise des techniques anti-empreinte pour réduire davantage le risque de détection.

Méthodes anti-empreinte

FonctionnalitéMéthodeObjectif
Émulation du processeurLimite les processeurs logiques à 4Imite le matériel typique d’un utilisateur
Émulation des pluginsSimule navigator.mimeTypes et les pluginsImite les fonctionnalités standard de Chrome
Propriétés de fenêtreAjoute outerWidth et outerHeightComplète la simulation du navigateur
Propriétés du fournisseurModifie l’identifiant Google de ChromeAide à éviter la détection de l’automatisation

Ces méthodes garantissent que le navigateur se comporte de manière conforme aux attentes des sites web envers les utilisateurs réels.

Suppression des indicateurs d’automatisation

Pour mieux dissimuler l’automatisation, le plugin supprime ou modifie les signes révélateurs d’une activité de bot :

  • Supprime la propriété navigator.webdriver
  • Ajoute les objets chrome.app et chrome.csi, présents dans les navigateurs Chrome classiques
  • Masque l’attribut sourceurl dans les scripts Puppeteer
  • Ajuste les propriétés permissions afin de correspondre au comportement naturel d’un navigateur

Gestion des CAPTCHA

Le plugin aide également à réduire les défis CAPTCHA en maintenant un comportement cohérent du navigateur et en gérant efficacement les sessions. Cela crée un mode de navigation conforme à l’activité humaine, lui permettant de contourner la plupart des tests de détection des bots sur des plateformes telles que sannysoft.com [2]. Cependant, les systèmes anti-bot avancés, comme ceux utilisés par Cloudflare, peuvent encore détecter l’automatisation dans certains cas [1].

sbb-itb-23997f1

Configuration personnalisée

La configuration personnalisée vous permet d’ajuster les paramètres stealth et le comportement du navigateur, afin d’éviter plus efficacement la détection.

Paramètres des modules Stealth

Puppeteer Stealth vous permet de gérer ses modules d’évasion pour des sites web spécifiques. Vous pouvez activer ou désactiver les modules selon vos besoins :

const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const stealth = StealthPlugin({
  webglVendor: "Google Inc. (Intel)",
  webglRenderer: "Intel Iris OpenGL Engine",
  navigator: {
    platform: "MacIntel",
    languages: ["en-US", "en"]
  }
})

Après avoir configuré les modules stealth, vous pouvez ajuster le comportement du navigateur afin de mieux imiter l’activité d’un utilisateur réel.

Paramètres de comportement du navigateur

Ajustez finement les paramètres du navigateur pour imiter une véritable expérience de navigation :

CatégorieOptionsObjectif
Identité utilisateurUser-Agent, plateforme, languesCrée une identité de navigateur cohérente
Profil matérielFournisseur WebGL, dimensions de l’écranImite les caractéristiques réelles d’un appareil
Environnement d’exécutionObjets d’exécution Chrome, propriétés NavigatorÉmule le comportement normal du navigateur

Introduisez des délais naturels entre les actions pour rendre l’automatisation moins détectable :

const randomDelay = (min, max) => {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

await page.waitForTimeout(randomDelay(1000, 3000));

L’ajout de ces délais aide votre automatisation à ressembler davantage à un comportement humain.

Configuration des proxys

L’utilisation de proxys au lancement du navigateur améliore l’anonymat :

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=http://proxy.example.com:8080`,
    '--disable-features=IsolateOrigins,site-per-process'
  ]
});

« Il est probablement impossible d’empêcher toutes les méthodes de détection de Chromium headless, mais il devrait être possible de rendre cette détection si difficile qu’elle devienne trop coûteuse ou déclenche trop de faux positifs pour rester viable. » — TiZho, contributeur GitHub [3]

Faites tourner les proxys et configurez un basculement automatique afin de maintenir une connectivité fiable. Ces configurations contribuent à réduire les risques de détection tout en assurant des performances stables.

Bonnes pratiques stealth

Pour maintenir les sessions automatisées sous le radar, une planification et une exécution rigoureuses sont essentielles.

Habitudes de navigation naturelles

Simulez une navigation réaliste en ajoutant des délais et des actions aléatoires :

async function emulateHumanBehavior(page) {
  // Random scrolling behavior
  await page.evaluate(() => {
    window.scrollBy({
      top: Math.random() * 500,
      behavior: 'smooth'
    });
  });

  // Random pauses between actions
  await page.waitForTimeout(1500 + Math.random() * 2500);
}
Modèle de comportementMise en œuvreObjectif
Mouvement de la sourisCourbes et vitesses aléatoiresImite le mouvement naturel du curseur
Interaction avec la pageVarie les profondeurs de défilement et les pausesSimule les habitudes de lecture
Timing de navigationDélais aléatoires (1,5 à 4 secondes)Évite les schémas de timing prévisibles
Vitesse de saisieIntervalles de frappe aléatoiresImite la saisie humaine

Ces interactions simulées fonctionnent conjointement avec les paramètres de configuration présentés précédemment.

Gestion des sessions

Une gestion appropriée des sessions garantit la cohérence des paramètres stealth. Utilisez un stockage persistant pour enregistrer les cookies et les données de session :

const browserContext = await browser.createIncognitoBrowserContext({
  userDataDir: './sessions/user1',
  persistentContext: true
});

Vous pouvez également gérer efficacement les cookies :

// Remove specific cookies but keep session-critical data
await page.deleteCookie({
  name: '_ga',
  domain: '.example.com'
});

Recommandations d’utilisation

Combinez les techniques ci-dessus avec ces étapes pratiques pour améliorer votre automatisation :

  • Gestion du rythme des requêtes : commencez avec un délai de 2 secondes entre les requêtes et augmentez-le si des CAPTCHA apparaissent.

  • Gestion des erreurs : créez un système de nouvelles tentatives pour gérer les requêtes ayant échoué :

    const maxRetries = 3;
    const baseDelay = 2000;
    
    async function fetchWithRetry(page, url) {
      for (let i = 0; i < maxRetries; i++) {
        try {
          return await page.goto(url);
        } catch (error) {
          await page.waitForTimeout(baseDelay * Math.pow(2, i));
        }
      }
    }
    
  • Rotation des proxys : utilisez plusieurs adresses IP pour éviter d’être signalé en raison d’une activité excessive.

« Il est probablement impossible d’empêcher toutes les méthodes de détection de Chromium headless, mais il devrait être possible de rendre cette détection si difficile qu’elle devienne trop coûteuse ou déclenche trop de faux positifs pour rester viable. » — TiZho, contributeur GitHub [3]

Surveillez l’évolution des méthodes de détection anti-bot et ajustez vos paramètres si nécessaire. Ces pratiques complètent les techniques stealth présentées plus haut dans l’article.

Conclusion

Voici un résumé rapide des principaux points et conseils pour utiliser efficacement Puppeteer-extra-plugin-stealth.

Principaux avantages

Puppeteer-extra-plugin-stealth aide à automatiser la navigation sans être signalé. Il fonctionne en masquant les indicateurs d’automatisation au moyen de modules d’évasion intégrés [2].

Parmi les fonctionnalités principales :

  • Suppression de l’identifiant « HeadlessChrome » des en-têtes User-Agent.
  • Masquage des indicateurs critiques d’automatisation, comme navigator.webdriver.
  • Ajustement des empreintes du navigateur afin d’imiter le comportement d’utilisateurs réels.
  • Mise en place de stratégies d’évasion adaptées aux besoins de sites web spécifiques.

Conseils de mise en œuvre

Pour affiner votre configuration d’automatisation, gardez ces stratégies à l’esprit :

Domaine d’attentionStratégieRésultat
Modules d’évasionActivez uniquement les fonctionnalités nécessairesRisque de détection réduit, meilleures performances
Gestion des erreursUtilisez une logique de nouvelles tentatives avec backoff exponentielGestion plus fiable des problèmes temporaires
Gestion des sessionsUtilisez des contextes de navigateur persistantsProfil stealth cohérent entre les sessions

Suggestions supplémentaires :

  • Commencez avec les paramètres stealth par défaut, puis ajustez-les à vos besoins.
  • Restez informé des nouvelles techniques anti-bot et adaptez votre approche en conséquence.
  • Combinez les fonctionnalités stealth avec des comportements de navigation naturels pour de meilleurs résultats.
  • Concentrez-vous sur une gestion cohérente des sessions afin d’éviter la détection.

Même si aucune configuration n’est infaillible à 100 %, la combinaison de plusieurs tactiques d’évasion rend la détection beaucoup plus difficile. La réussite repose sur une configuration rigoureuse et des mises à jour régulières de vos méthodes. Ces conseils, associés aux fonctionnalités du plugin, constituent une base solide pour une automatisation difficile à détecter.

References

FAQ

Frequently Asked Questions

Il s’agit d’un plugin Puppeteer qui masque les empreintes de l’automatisation — telles que navigator.webdriver — et reproduit le comportement d’un véritable navigateur afin de rendre Chrome headless plus difficile à détecter par les systèmes anti-bot.

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