Puppeteer-Extra-Stealth est obsolète : ce que utilise l'automatisation moderne — couverture illustrée d'article Clawbrowser

Puppeteer-Extra-Stealth est obsolète : ce que utilise l'automatisation moderne

Clawbrowser Teamautomatisation-de-navigateurspuppeteerplaywrightanti-botguide

puppeteer-extra-plugin-stealth est le package anti-détection le plus populaire pour Puppeteer. Il totalise encore plus de 600K téléchargements hebdomadaires sur npm. Il n'a pas non plus reçu de mise à jour depuis mars 2023. La version 2.11.2 est la dernière, et elle le restera : la maintenance est inactive, les issues GitHub s'accumulent et les systèmes anti-bot ont évolué.

TL;DR : Les plugins stealth corrigent les signaux de détection par des overrides JavaScript au niveau de la page. En 2026, les systèmes anti-bot comme Cloudflare, Akamai et DataDome vérifient des signaux hors de portée de JavaScript : empreintes TLS, artefacts du protocole CDP et différences de rendu au niveau du moteur. La solution n'est pas un meilleur plugin. C'est une couche différente : soit un driver patché qui masque les fuites du protocole, soit un navigateur patché qui gère les empreintes au niveau du moteur.


Ce que font réellement les plugins stealth

puppeteer-extra-plugin-stealth regroupe 11 modules d'évasion exécutés via evaluateOnNewDocument. Chaque module corrige une surface de détection :

Module Ce qu'il corrige
webdriver Removes navigator.webdriver = true
chrome.runtime Fakes the chrome.runtime object
chrome.csi / chrome.app Adds missing Chrome API stubs
navigator.plugins Spoofs the plugin array
navigator.languages Overrides language settings
navigator.permissions Fixes permission query behavior
media.codecs Spoofs codec support
sourceurl Hides //# sourceURL from injected scripts
iframe.contentWindow Fixes cross-origin iframe detection
webgl.vendor Spoofs WebGL vendor/renderer strings
user-agent-override Sets a realistic User-Agent header

Ces correctifs fonctionnaient en 2021-2022, lorsque les systèmes anti-bot vérifiaient principalement les propriétés JavaScript au niveau de la page. Ils sont inefficaces face à ce que les systèmes de détection modernes contrôlent réellement.

Pourquoi les plugins stealth échouent en 2026

La détection anti-bot opère désormais sous la couche JavaScript. Les signaux pertinents sont ceux que evaluateOnNewDocument ne peut pas atteindre.

Fuites du protocole CDP

Lorsque Puppeteer se connecte à Chrome, il envoie des commandes CDP telles que Runtime.enable, Page.enable et Network.enable. Ces commandes laissent des artefacts dans l'état interne du navigateur que les scripts anti-bot détectent. Le plugin stealth ne touche pas au CDP car il opère au niveau de la page, pas du protocole.

La commande Runtime.enable suffit à elle seule pour identifier une session automatisée. Aucun correctif au niveau de la page ne masque le fait que des commandes CDP ont été émises.

Empreinte TLS

Cloudflare vérifie les empreintes TLS (JA3/JA4) avant de servir le moindre HTML. Si l'empreinte TLS est incorrecte, votre session reçoit un challenge ou un blocage avant même le chargement des correctifs JavaScript du plugin stealth. Le plugin opère au niveau de la page et n'a aucun accès à la couche TLS. Pour une explication détaillée du rôle de l'empreinte TLS dans la pile de détection, consultez la section couche réseau de Automatisation du navigateur sans blocage.

Détection des overrides JavaScript

Les scripts anti-bot ne vérifient pas seulement la valeur de navigator.webdriver. Ils vérifient le descripteur de propriété. Un navigateur réel définit webdriver comme un getter natif sur le prototype Navigator. Le plugin stealth le remplace avec Object.defineProperty, ce qui modifie le flag configurable du descripteur et la sortie toString() de la fonction getter. Les scripts de détection testent ces divergences.

Le même problème s'applique aux autres overrides. chrome.runtime, les tableaux de plugins et les requêtes de permissions présentent des différences détectables lorsque leurs implémentations natives sont remplacées par des stubs JavaScript.

Différences de rendu headless

Même avec --headless=new (le mode headless récent), Chrome effectue un rendu légèrement différent de Chrome en mode fenêtré. Les métriques de polices, la sortie canvas accélérée par GPU et les APIs de dimensions d'écran diffèrent. Le plugin stealth corrige certaines propriétés du navigator mais ne peut pas modifier le comportement du moteur de rendu.


Ce qui a remplacé les plugins stealth

L'écosystème s'est scindé en deux approches : les drivers patchés (correction de la couche protocole) et les navigateurs patchés (correction de la couche moteur). Ils résolvent des problèmes différents.

Drivers patchés : Rebrowser et Patchright

Rebrowser fournit des remplacements directs pour Puppeteer et Playwright (rebrowser-puppeteer, rebrowser-playwright). Les correctifs ciblent les artefacts du protocole CDP : ils modifient la manière dont Runtime.enable et d'autres commandes interagissent avec le navigateur pour éviter de laisser des traces détectables. Vous remplacez le nom du package dans votre code et tout le reste reste identique.

// Before: detected
const puppeteer = require('puppeteer');

// After: CDP artifacts patched
const puppeteer = require('rebrowser-puppeteer');

Patchright fait la même chose pour Playwright, avec un focus sur Python. Il corrige les fuites de Runtime.enable et bénéficie d'une maintenance active.

Limitation : Les drivers patchés corrigent la détection de protocole mais ne traitent pas le fingerprinting du navigateur. Si le site vérifie Canvas, WebGL, AudioContext ou le rendu des polices, vous restez exposé. Les drivers patchés répondent à la question "es-tu automatisé ?" mais pas à "es-tu un vrai appareil ?".

Un navigateur patché modifie Chromium pour que les signaux d'empreinte soient cohérents au niveau du moteur. La sortie Canvas, le rendu WebGL, les données AudioContext, les métriques de polices, les dimensions d'écran, le fuseau horaire et la locale rapportent des valeurs correspondant à un profil d'appareil réel.

C'est ce que fait Clawbrowser. C'est un fork de Chromium avec des correctifs d'empreinte au niveau du moteur sur plus de 20 surfaces, un routage proxy intégré, une prévention des fuites WebRTC et un support CDP natif. Votre code Puppeteer ou Playwright existant s'y connecte via CDP :

from playwright.async_api import async_playwright

async def automate_without_detection():
    async with async_playwright() as p:
        # Connect to Clawbrowser instead of stock Chrome

Ce que cela gère et que les plugins stealth ne peuvent pas :

  • Cohérence Canvas/WebGL/AudioContext au niveau du moteur (pas des stubs JavaScript)
  • Empreinte TLS correspondant à une vraie session Chrome
  • Connexion CDP sans artefacts Runtime.enable
  • Prévention des fuites WebRTC au niveau du navigateur
  • Routage proxy avec alignement géographique intégré

Pour le détail complet de ce qui est soumis au fingerprinting, consultez Empreintes digitales du navigateur : les 20+ signaux utilisés par les systèmes anti-bot.


Comment choisir

Le bon outil dépend de ce qui vous détecte.

Type de détection Symptôme Solution
CDP protocol artifacts Blocked immediately on page load, no CAPTCHA Patched driver (Rebrowser, Patchright)
Browser fingerprint mismatch CAPTCHA on every page, or silent data differences Patched browser (Clawbrowser)
TLS fingerprint mismatch Blocked before page loads (403 on first request) Patched browser with proxy routing
IP reputation Blocked from datacenter IPs Residential proxy (any approach)
Behavioral detection Blocked after 5-10 pages Timing and session management in your code

Quand les drivers patchés suffisent

Si vous automatisez des sites dont la détection basique vérifie les artefacts CDP sans analyser en profondeur l'empreinte du navigateur, Rebrowser ou Patchright conviendront. Cela couvre de nombreux sites avec des configurations anti-bot légères.

Quand vous avez besoin d'un navigateur patché

Si le site utilise Cloudflare Bot Management, Akamai Bot Manager, DataDome ou PerimeterX, vous avez besoin d'une cohérence d'empreinte au niveau du moteur. Les correctifs au niveau de la page et du driver ne suffisent pas lorsque la détection vérifie simultanément plus de 20 surfaces du navigateur.

Clawbrowser est un navigateur anti-détection local, gratuit, basé sur Chromium avec des empreintes gérées, un routage proxy, un CDP natif et un serveur MCP intégré. Il prend en charge l'identité du navigateur et les couches réseau pour que votre code se concentre uniquement sur le comportement et la gestion des sessions.


Migrer depuis les plugins stealth

Si vous utilisez actuellement puppeteer-extra-plugin-stealth ou playwright-stealth, la migration vers Clawbrowser prend moins de cinq minutes.

Avant (plugin stealth)

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

const browser = await puppeteer.launch({ headless: false });

Après (Clawbrowser)

const puppeteer = require('puppeteer-core');

// Connect to Clawbrowser over CDP
const browser = await puppeteer.connect({
    browserWSEndpoint: 'ws://127.0.0.1:9222'

La différence principale : vous supprimez puppeteer-extra et puppeteer-extra-plugin-stealth de vos dépendances. Pas de configuration de plugin. Pas de sélection de modules d'évasion. L'anti-détection se fait au niveau du navigateur, pas dans votre code.

Pour les patterns spécifiques au scraping (pagination, préchauffage de session, contournement Cloudflare), consultez Web Scraping sans détection.


FAQ

puppeteer-extra-stealth est-il complètement inutile ?

Il fonctionne encore sur les sites sans système anti-bot commercial. Si le site cible ne vérifie que navigator.webdriver et les propriétés JavaScript basiques, le plugin stealth suffit. Mais tout site utilisant Cloudflare, Akamai, DataDome, PerimeterX ou des plateformes sociales comme Facebook, Instagram, LinkedIn et X le détectera.

playwright-stealth a-t-il les mêmes problèmes ?

Oui. playwright-stealth utilise la même approche : des overrides JavaScript par injection au niveau de la page. Il ne peut pas atteindre les empreintes TLS, les artefacts CDP ni le rendu au niveau du moteur. Les limitations de détection sont identiques.

Peut-on utiliser Rebrowser et Clawbrowser ensemble ?

Ce n'est pas nécessaire. Clawbrowser gère à la fois la couche protocole et la couche empreinte. Les correctifs Rebrowser sont utiles lorsque vous utilisez Chrome standard et ne pouvez pas passer à un navigateur anti-détection. Si vous utilisez Clawbrowser, les artefacts CDP sont déjà traités.

Pourquoi stealth affiche-t-il encore 600K téléchargements par semaine ?

L'inertie. La plupart des tutoriels et réponses Stack Overflow le recommandent encore. Les développeurs copient-collent des solutions qui fonctionnaient en 2022 sans vérifier si le package est toujours maintenu. Le nombre élevé de téléchargements ne signifie pas qu'il est efficace contre la détection moderne.


Arrêtez de patcher, commencez à résoudre

Les plugins stealth étaient une solution raisonnable lorsque la détection anti-bot reposait sur des vérifications au niveau JavaScript. La détection a migré vers les empreintes TLS, l'analyse du protocole CDP et les différences de rendu au niveau du moteur. Patcher au niveau de la page ne permet pas d'atteindre ces signaux.

Installez Clawbrowser pour gérer la détection au niveau du navigateur : copiez le prompt d'installation depuis clawbrowser.ai et collez-le dans votre agent IA. Supprimez puppeteer-extra et puppeteer-extra-plugin-stealth de vos dépendances. Connectez votre code Puppeteer ou Playwright existant via CDP. L'anti-détection est dans le navigateur, pas dans votre code.

Pour le modèle de détection sous-jacent, consultez Automatisation du navigateur sans blocage : la pile de défense à 4 couches.

Continue exploring

Ask AI how Clawbrowser helps

Poursuivre la lecture

Voir tous les articles →