L'alternative à puppeteer-extra-plugin-stealth open source
Le plugin stealth reste le moyen le plus installé pour greffer des évasions sur Puppeteer, avec environ 840000 téléchargements par semaine, mais il n’a pas connu de nouvelle version depuis mars 2023. Chaque évasion est un patch JavaScript sur un Chrome d’origine, et les patchs JavaScript se trahissent. Clearcote définit ces valeurs nativement dans le moteur.
Qu'est-ce que puppeteer-extra-plugin-stealth ?
puppeteer-extra-plugin-stealth (par berstend) est un ensemble de modules d’évasion JavaScript injectés avec page.evaluateOnNewDocument avant l’exécution des scripts de la page. Chacun corrige un seul indice : navigator.webdriver, les plugins, chrome.runtime, le vendor WebGL, les iframes, les codecs, etc. Il est sous licence MIT et extrêmement populaire, avec environ 840000 téléchargements npm par semaine, et son approche a été portée dans playwright-stealth et selenium-stealth.
Il n’est d’ailleurs plus maintenu dans les faits : la dernière version npm (2.11.2) date de mars 2023, et le dépôt n’a pas bougé depuis mi-2024. La limite structurelle est antérieure à cela. Il s’agit de surcharges JavaScript sur un moteur d’origine, et ces surcharges se trahissent via Function.prototype.toString, des descripteurs de propriété modifiés et des relectures depuis des Web Workers ou des iframes cross-origin où le patch est absent. Il ne modifie pas les valeurs natives, ne touche ni au TLS ni au HTTP/2, et ne traite pas la fuite CDP Runtime.enable. Son propre README admet qu’empêcher toutes les façons de détecter Chromium en headless est probablement impossible.
Clearcote vs puppeteer-extra-plugin-stealth
| Fonctionnalité | Clearcote | puppeteer-extra-plugin-stealth |
|---|---|---|
| Approche | Patchs C++ au niveau du moteur : valeurs natives | Évasions JavaScript injectées dans chaque document |
| Raccord détectable | Aucun : natif dans chaque realm (page, workers, iframes) | Visible via toString, les descripteurs, les relectures depuis un worker ou une iframe |
| Cohérence TLS / réseau | Suit le Chrome annoncé (JA3/JA4 + HTTP/2) | Non traitée |
| Framework | Playwright et Puppeteer (Python, Node, .NET) | Puppeteer (Node) ; playwright-extra pour Playwright |
| Maintenance | Actif | Dernière version en mars 2023 |
| Licence | Build ouvert sous BSD-3 | MIT |
| Coût | Build ouvert gratuit ; dernier build gratuit avec GitHub | Gratuit et open source |
Comparatif établi en septembre 2026. Licence de puppeteer-extra-plugin-stealth : Open source (MIT) ; les détails évoluent — consultez le projet pour les informations les plus récentes.
Pourquoi les équipes choisissent Clearcote
Natif, pas surchargé
Chaque évasion du plugin stealth est une surcharge JavaScript qu’un détecteur peut repérer. Clearcote définit les valeurs dans le moteur : elles apparaissent comme natives, et il n’y a aucune surcharge à trouver.
Cohérent dans tous les realms
Les patchs JavaScript appliqués à la page divergent dans les Web Workers et les iframes cross-origin. Les valeurs définies au niveau du moteur concordent partout, ce qui élimine cette catégorie d’indices.
La couche réseau
Le plugin n’a aucun accès au TLS ni au HTTP/2. Le handshake de Clearcote suit la version de Chrome annoncée : ce qui passe sur le réseau concorde avec le JavaScript.
Maintenu et vérifié
Clearcote est vérifié avec des tests ouverts à chaque version. Les évasions du plugin datent de début 2023, et Chrome a avancé de dizaines de versions depuis.
Quand puppeteer-extra-plugin-stealth peut être le meilleur choix
- Vous utilisez déjà Puppeteer et voulez un ensemble d’évasions en une ligne pour des cibles peu exigeantes.
- Il vous faut un outil sous licence MIT à glisser dans un scraper Node existant.
- Pour les pages de test publiques et les détections plus anciennes, c’est rapide et parfois suffisant.
FAQ
puppeteer-extra-plugin-stealth est-il encore maintenu ?
Pas activement. La dernière version npm, 2.11.2, a été publiée en mars 2023, et le dépôt n’a pas été mis à jour depuis juillet 2024. Il s’installe toujours et reste très utilisé, mais ses évasions n’ont pas suivi le rythme de Chrome.
Pourquoi les patchs de furtivité JavaScript sont-ils détectés ?
Parce que ce sont des surcharges d’une vraie fonction. Un détecteur peut la convertir en chaîne (une fonction native affiche [native code] ; une surcharge révèle son propre code source), inspecter le descripteur de propriété, ou relire la valeur depuis une iframe neuve ou un Web Worker où le patch n’est pas appliqué. Les modifications au niveau du moteur évitent ce problème en rendant la valeur native partout.
En quoi Clearcote diffère-t-il du plugin stealth ?
Le plugin injecte des évasions JavaScript dans un Chrome d’origine ; Clearcote est un Chromium modifié où les valeurs sont natives dans le moteur, cohérentes entre workers et iframes, avec un persona TLS/HTTP-2 auquel le plugin n’a pas accès.
Existe-t-il une version pour Playwright ?
Oui : playwright-extra peut charger le même plugin sous Node, et playwright-stealth le porte en Python. Les deux reposent sur la même conception à base de surcharges JavaScript.
À lire aussi
Essayez l'alternative Chromium open source
Gratuit et open source, s'utilise tel quel avec Playwright et Puppeteer, cohérent jusqu'au handshake TLS.
Gratuit pour un navigateur avec GitHub. Sans carte.