Aller au contenu
Extensions · MV2 · MV3 · headless

Extensions Chrome, Manifest V2 compris

Passez une liste de dossiers d'extensions décompressées et Clearcote les charge au lancement. Manifest V3 fonctionne, tout comme Manifest V2, que Chrome standard a fini de désactiver : les bloqueurs de contenu MV2 et les anciens outils internes continuent de tourner. En headless aussi.

Dans toutes les formules, sous Windows et Linux.

Une liste de dossiers

from clearcote import launch_persistent_context

ctx = launch_persistent_context(
    "./profile",
    extensions=["./ext/ublock", "./ext/my-helper"],   # unpacked directories, MV2 or MV3
    headless=True,                                     # works headed too
)
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto("https://example.com")

Points clés

Manifest V2 fonctionne toujours

Le jeu de patchs de confidentialité upstream rétablit la prise en charge de MV2 : les bloqueurs uniquement MV2 et les outils plus anciens continuent de fonctionner ici, alors qu'ils ne fonctionnent plus dans Chrome.

Headless et headed

Les extensions se chargent en mode headless comme en headed, sans affichage virtuel à mettre en place rien que pour en faire tourner une.

La paire de flags, gérée pour vous

--load-extension seul est ignoré sous automatisation. Le SDK le définit en même temps que --disable-extensions-except, pour que l'extension apparaisse réellement.

Des dossiers, pas des fichiers .crx

Pointez vers le dossier qui contient manifest.json. Un .crx se décompresse en un tel dossier.

Windows et Linux

La même option sur les deux plateformes, en headed comme en headless.

Votre code, votre surface d'exposition

Clearcote ne masque pas les extensions. Préférez celles sans web_accessible_resources, car une page peut les sonder.

Comment les extensions se chargent

Les extensions ont besoin d'un profil où résider. launch() tourne sur un profil jetable, il les accepte donc, tout comme launch_persistent_context / launchPersistentContext et serve() (.NET : Extensions). Les seuls lancements qui ne le peuvent pas sont ceux en navigation privée (ephemeral_profile=False, le launch() de l'API async, LaunchAsync en .NET). Les navigateurs hébergés ne chargent pas d'extensions.

Clearcote ne peut ni installer ni mettre à jour d'extensions depuis le Chrome Web Store : les patchs de confidentialité upstream suppriment cette intégration, si bien que les extensions chargées de cette façon ne se mettent jamais à jour d'elles-mêmes. Livrez plutôt le répertoire décompressé avec votre automatisation, sur le modèle qu'utilisent Playwright et Puppeteer.

Une extension est observable. Les content scripts qui réécrivent le DOM, injectent des styles ou bloquent des requêtes modifient ce qu'une page mesure, et n'importe quelle page peut récupérer les ressources web-accessible déclarées. Si vous avez seulement besoin de bloquer des requêtes, Network.setBlockedURLs de CDP, dans la couche d'automatisation, bloque par motif d'URL sans surface d'extension et conserve le cache (le route() de Playwright fonctionne aussi, mais désactive le cache).

Cas d'usage

Blocage de contenu

Faites tourner le build MV2 d'un bloqueur que Chrome ne charge plus.

Tester votre propre extension

Des tests end-to-end d'une extension, en headless, dans votre CI.

Outils internes

Les extensions maison d'aide à la connexion, d'annotation ou de QA, au sein de sessions automatisées.

Clearcote est conçu pour la confidentialité, les tests, la recherche et l'automatisation licite. Vous êtes responsable de l'usage que vous en faites et du respect des conditions d'utilisation des sites que vous visitez.

Offres qui l'incluent

Dans toutes les formules, sous Windows et Linux, en mode headed comme en headless.

Comparer les offres

FAQ

Playwright peut-il charger des extensions Chrome en mode headless ?

Avec Clearcote, oui. Passez les dossiers décompressés dans extensions à launch() ou à un contexte persistant : ils se chargent en headless comme en headed, sans flag supplémentaire.

Manifest V2 fonctionne-t-il encore ?

Oui. Chrome standard a fini de désactiver MV2, mais le jeu de patchs de confidentialité upstream sur lequel repose Clearcote le rétablit : les extensions MV2 comme MV3 fonctionnent.

Puis-je installer des extensions depuis le Chrome Web Store ?

Non. L'intégration du Web Store a été supprimée avec les autres services de Google. Téléchargez ou compilez l'extension, décompressez-la s'il s'agit d'un .crx, puis passez le dossier.

Pourquoi mon extension n'apparaît-elle pas ?

Le plus souvent, c'est le chemin : il doit pointer vers le dossier qui contient manifest.json, pas vers son parent ni vers un .crx. Si un content script ne s'exécute jamais, vérifiez que son motif matches couvre bien l'URL ; http://localhost/* ne correspond pas à http://127.0.0.1:8080/.

Les sites peuvent-ils savoir qu'une extension est installée ?

Parfois. Une page peut remarquer les modifications du DOM effectuées par un content script, et elle peut tenter de récupérer les ressources web-accessible déclarées par une extension. C'est vrai de tout navigateur doté d'extensions, et Clearcote ne le masque pas.

Aller plus loin dans la documentation

Fonctionnalités associées

Essayer Clearcote

S'utilise tel quel avec Playwright et Puppeteer, cohérent jusqu'au handshake TLS, avec un build open source comme point de départ.

Gratuit pour un navigateur avec GitHub. Sans carte.