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-extraet 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
HeadlessChromepar défaut par une version plus naturelle - La définition d’en-têtes
Accept-Languageréalistes - L’ajustement de la prise en charge des codecs pour la lecture des médias
- La modification de
navigator.vendorpour 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éthode | Objectif |
|---|---|---|
| Émulation du processeur | Limite les processeurs logiques à 4 | Imite le matériel typique d’un utilisateur |
| Émulation des plugins | Simule navigator.mimeTypes et les plugins | Imite les fonctionnalités standard de Chrome |
| Propriétés de fenêtre | Ajoute outerWidth et outerHeight | Complète la simulation du navigateur |
| Propriétés du fournisseur | Modifie l’identifiant Google de Chrome | Aide à é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.appetchrome.csi, présents dans les navigateurs Chrome classiques - Masque l’attribut
sourceurldans les scripts Puppeteer - Ajuste les propriétés
permissionsafin 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égorie | Options | Objectif |
|---|---|---|
| Identité utilisateur | User-Agent, plateforme, langues | Crée une identité de navigateur cohérente |
| Profil matériel | Fournisseur WebGL, dimensions de l’écran | Imite les caractéristiques réelles d’un appareil |
| Environnement d’exécution | Objets 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 comportement | Mise en œuvre | Objectif |
|---|---|---|
| Mouvement de la souris | Courbes et vitesses aléatoires | Imite le mouvement naturel du curseur |
| Interaction avec la page | Varie les profondeurs de défilement et les pauses | Simule les habitudes de lecture |
| Timing de navigation | Délais aléatoires (1,5 à 4 secondes) | Évite les schémas de timing prévisibles |
| Vitesse de saisie | Intervalles de frappe aléatoires | Imite 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’attention | Stratégie | Résultat |
|---|---|---|
| Modules d’évasion | Activez uniquement les fonctionnalités nécessaires | Risque de détection réduit, meilleures performances |
| Gestion des erreurs | Utilisez une logique de nouvelles tentatives avec backoff exponentiel | Gestion plus fiable des problèmes temporaires |
| Gestion des sessions | Utilisez des contextes de navigateur persistants | Profil 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.


