Extensiones de Chrome, Manifest V2 incluido
Pasa una lista de carpetas de extensiones descomprimidas y Clearcote las carga al iniciar. Manifest V3 funciona, y también Manifest V2, que Chrome estándar ya terminó de desactivar, así que los bloqueadores de contenido MV2 y las herramientas internas más antiguas siguen funcionando. También en modo headless.
En todos los planes, en Windows y Linux.
Una lista de carpetas
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")Lo más destacado
Manifest V2 sigue funcionando
El conjunto de parches de privacidad upstream restaura la compatibilidad con MV2, así que los bloqueadores que solo existen para MV2 y las herramientas más antiguas siguen funcionando aquí, aunque ya dejaron de funcionar en Chrome.
Headless y con interfaz
Las extensiones se cargan en modo headless además de con interfaz, sin necesidad de una pantalla virtual solo para que funcione una.
La combinación de flags, resuelta
--load-extension por sí solo se ignora bajo automatización. El SDK lo configura junto con --disable-extensions-except, para que la extensión aparezca de verdad.
Carpetas, no archivos .crx
Apunta a la carpeta que contiene manifest.json. Un .crx se descomprime en una.
Windows y Linux
La misma opción en ambas plataformas, con interfaz y en modo headless.
Tu código, tu superficie
Clearcote no oculta las extensiones. Prefiere las que no tienen web_accessible_resources, ya que una página puede sondear esos recursos.
Cómo se cargan las extensiones
Las extensiones necesitan un perfil donde vivir. launch() se ejecuta sobre un perfil desechable, así que las admite, igual que launch_persistent_context / launchPersistentContext y serve() (.NET: Extensions). Los únicos lanzamientos que no pueden son los de incógnito (ephemeral_profile=False, el launch() de la API asíncrona, LaunchAsync de .NET). Los navegadores alojados no cargan extensiones.
Clearcote no puede instalar ni actualizar extensiones desde la Chrome Web Store: los parches de privacidad upstream eliminan esa integración, así que las extensiones cargadas de esta forma nunca se actualizan solas. En su lugar, distribuye el directorio descomprimido junto con tu automatización, el mismo modelo que usan Playwright y Puppeteer.
Una extensión es observable. Los content scripts que reescriben el DOM, inyectan estilos o bloquean solicitudes cambian lo que mide una página, y cualquier página puede obtener los recursos web accesibles declarados. Si solo necesitas bloquear solicitudes, Network.setBlockedURLs de CDP en la capa de automatización bloquea por patrón de URL sin superficie de extensión y conserva la caché (route() de Playwright también funciona, pero desactiva la caché).
Para qué se usa
Bloqueo de contenido
Usa el build MV2 de un bloqueador que Chrome ya no carga.
Pruebas de tu propia extensión
Pruebas end-to-end de una extensión, en modo headless, en CI.
Herramientas internas
Extensiones de la empresa para asistentes de inicio de sesión, anotación o QA, dentro de sesiones automatizadas.
Clearcote está hecho para la privacidad, las pruebas, la investigación y la automatización lícita. Tú eres responsable de cómo lo usas y de respetar los términos de los sitios que visitas.
Qué plan lo incluye
En todos los planes, en Windows y Linux, con interfaz y en modo headless.
Comparar planesPreguntas frecuentes
¿Puede Playwright cargar extensiones de Chrome en modo headless?
Con Clearcote, sí. Pasa las carpetas descomprimidas como extensions a launch() o a un contexto persistente y se cargan tanto en modo headless como con interfaz, sin flags adicionales.
¿Sigue funcionando Manifest V2?
Sí. Chrome estándar ya terminó de desactivar MV2, pero el conjunto de parches de privacidad upstream en el que se basa Clearcote lo restaura, así que funcionan tanto las extensiones MV2 como las MV3.
¿Puedo instalar extensiones desde la Chrome Web Store?
No. La integración con la Web Store se elimina junto con los demás servicios de Google. Descarga o compila la extensión, descomprímela si es un .crx y pasa la carpeta.
¿Por qué no aparece mi extensión?
Casi siempre es la ruta: tiene que apuntar a la carpeta que contiene manifest.json, no a su carpeta padre ni a un .crx. Si un content script nunca se ejecuta, comprueba que su patrón matches cubra la URL; http://localhost/* no coincide con http://127.0.0.1:8080/.
¿Pueden los sitios web saber que hay una extensión instalada?
A veces. Una página puede notar los cambios que un content script hace en el DOM, y puede intentar obtener los recursos web accesibles que declara una extensión. Esto ocurre en cualquier navegador con extensiones, y Clearcote no lo oculta.
Profundiza en la documentación
Características relacionadas
Un Chromium de reemplazo directo para Playwright y Puppeteer: un solo cambio de import en Python, Node o .NET, y el navegador se descarga y se verifica con SHA-256 por ti.
Actívalo y Clearcote descarga el CDM de Widevine de Google igual que lo hace Chrome estándar, lo verifica y lo habilita, para que se reproduzca el video con DRM.
Ejecuta Clearcote como endpoint CDP permanente desde la imagen oficial de Docker, con serve() o una CLI, y conecta cualquier framework sin cambiar código.
Canvas, WebGL, WebGPU, audio, fuentes, pantalla y hardware derivados en el motor C++ a partir de un solo seed, con la configuración regional y la zona horaria a juego, para que cada superficie coincida con todas las demás.
Lecturas relacionadas
Prueba Clearcote
Un reemplazo directo para Playwright y Puppeteer, coherente hasta el handshake TLS, con un build de código abierto para empezar.
Gratis para un navegador con GitHub. Sin tarjeta.