Aller au contenu

L'alternative à playwright-stealth open source

playwright-stealth est le moyen le plus rapide d’ajouter de la furtivité à Playwright en Python : un wrapper, et chaque page reçoit un ensemble d’évasions JavaScript. Mais ces évasions sont des surcharges posées sur un navigateur d’origine, et son propre mainteneur le qualifie de preuve de concept. Clearcote, lui, définit ces valeurs nativement dans le moteur : il n’y a aucune surcharge qu’une page pourrait trouver.

Qu'est-ce que playwright-stealth ?

playwright-stealth est un portage Python de puppeteer-extra-plugin-stealth pour Playwright. Le portage d’origine, par AtuboDad, n’a pas été mis à jour depuis mi-2024 ; le nom PyPI est désormais repris par un fork activement maintenu (Mattwmaster58), qui a publié une version 2.0 avec une API plus propre et intégré les pull requests en attente. Il est sous licence MIT et très largement utilisé : environ 2,4 millions de téléchargements PyPI par mois.

Il fonctionne en enregistrant des scripts d’init sur chaque contexte, chacun corrigeant un indice : navigator.webdriver, navigator.languages, les plugins, le vendor WebGL, chrome.runtime, etc. Le mainteneur est franc sur ses limites. Le README dit de ne pas compter sur lui pour contourner autre chose que la détection de bots la plus simple, et le présente comme un point de départ. Les raisons sont structurelles : une surcharge JavaScript se repère avec Function.prototype.toString ou en vérifiant le descripteur de propriété, les scripts d’init de la page n’atteignent pas les Web Workers, et rien dans le package ne touche aux effets de bord CDP propres au driver Playwright ni à la couche réseau.

Clearcote vs playwright-stealth

FonctionnalitéClearcoteplaywright-stealth
Approche Patchs C++ au niveau du moteur : valeurs natives Scripts d’init JavaScript sur un navigateur d’origine
Raccord détectable Aucun : natif dans la page, les iframes et les workers Surcharges visibles via toString, les descripteurs et les relectures depuis un worker
Identité de l’empreinte Persona cohérent dérivé d’une seule seed (canvas, WebGL, polices, navigator) Quelques valeurs définies à la main par-dessus les valeurs réelles de l’hôte
Effets de bord du driver / CDP Contenus au lancement (mondes isolés) et dans le moteur Non traités ; driver Playwright d’origine
Cohérence TLS / réseau Le ClientHello suit la version de Chrome annoncée Non traitée
Framework Playwright et Puppeteer (Python, Node, .NET) Playwright (Python)
Mise en place Remplacer le binaire du navigateur Envelopper Playwright en une ligne
Coût Build ouvert gratuit ; dernier build gratuit avec GitHub ; Pro $49/mois Gratuit et open source (MIT)

Comparatif établi en septembre 2026. Licence de playwright-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 de playwright-stealth remplace une vraie fonction du navigateur par une fonction JavaScript, et ce remplacement est observable. Clearcote modifie la valeur à l’intérieur de Chromium : la fonction qu’inspecte la page est la vraie fonction native.

La même réponse dans chaque realm

Les scripts d’init patchent la page. Relisez la même valeur depuis un Web Worker ou une iframe neuve, et vous obtenez l’original non patché. Les valeurs définies au niveau du moteur concordent partout.

Une identité complète, pas une poignée de champs

Une seule seed --fingerprint produit une machine cohérente sur le canvas, WebGL, l’audio, les polices, l’écran et le matériel, au lieu de quelques surcharges plaquées sur l’hôte réel.

Gardez votre code Playwright

Clearcote est un binaire Chromium. Faites pointer executable_path dessus, ou utilisez le launch() du SDK, et le reste de votre script Playwright ne change pas.

Quand playwright-stealth peut être le meilleur choix

  • Vous voulez tester quelque chose en cinq minutes sur une cible peu exigeante, sans gérer de binaire de navigateur.
  • Vos cibles ne vérifient que les indices évidents, comme navigator.webdriver.
  • Vous utilisez déjà Clearcote et vous vous demandez s’il vous le faut encore : non. Ses évasions font doublon avec des valeurs que le moteur définit déjà, et ajouter des surcharges JavaScript par-dessus fait réapparaître le raccord que le moteur supprime.

FAQ

playwright-stealth fonctionne-t-il encore ?

Il s’installe et tourne toujours, et le fork maintenu (2.x) est mis à jour. Qu’il suffise ou non dépend de la cible. Son propre README prévient qu’il ne gère que la détection la plus simple, car les surcharges JavaScript sont détectables et il ne touche ni à la couche driver ni à la couche réseau.

Quelle est la différence entre playwright-stealth et Clearcote ?

playwright-stealth injecte du JavaScript dans un Chromium d’origine pour surcharger un ensemble de valeurs. Clearcote est un Chromium modifié où ces valeurs sont natives, cohérentes d’une frame et d’un worker à l’autre, avec en dessous une empreinte TLS assortie. Les deux se pilotent avec un Playwright ordinaire.

Faut-il utiliser playwright-stealth avec Clearcote ?

Non. Le moteur renvoie déjà des valeurs cohérentes, et y superposer des surcharges JavaScript remplace des fonctions natives par des fonctions détectables. Lancez Clearcote avec Playwright, tout simplement.

Existe-t-il un playwright-stealth pour Node.js ?

L’équivalent Node est playwright-extra avec le plugin stealth de puppeteer-extra, qui repose sur la même conception à base de surcharges JavaScript. Clearcote fonctionne de la même façon depuis Python, Node et .NET.

À lire aussi

Q&RWhy does Function.toString() reveal a hooked function?Calling toString() on a native function returns “[native code]”; an override returns its own source instead — so detectors stringify APIs to catch JavaScript spoofs.Q&RPlaywright vs Puppeteer for stealth: does it matter?Both drive Chromium over CDP, so both leak the same automation artifacts. Stealth comes from the browser binary and launch defaults, not the framework you pick.ComparatifClearcote vs puppeteer-extra-plugin-stealthLe 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.ComparatifClearcote vs CamoufoxCamoufox est un navigateur anti-détection open source bien conçu, basé sur Firefox. Clearcote applique la même approche au niveau du moteur, mais à Chromium : votre automatisation présente ainsi le navigateur qu’utilisent réellement environ 69 % du web, et non un navigateur utilisé par environ 3 %.ComparatifClearcote vs CloakBrowserCloakBrowser est un Chromium furtif solide, modifié au niveau du moteur et très suivi, mais son binaire patché est fermé. Clearcote agit lui aussi au niveau du moteur, tourne sur un Chromium plus récent et publie un build ouvert dont vous pouvez lire et recompiler chaque patch.ComparatifClearcote vs undetected-chromedriverundetected-chromedriver est encore téléchargé environ 2 millions de fois par mois, mais sa dernière version date de février 2024. Il cache le raccord Selenium/ChromeDriver sur un Chrome d’origine et ne touche jamais ni à l’empreinte ni à la couche réseau. Clearcote modifie les deux dans le moteur.

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.