Pular para o conteúdo
Extensões · MV2 · MV3 · headless

Extensões do Chrome, inclusive Manifest V2

Passe uma lista de pastas de extensões descompactadas e o Clearcote as carrega na inicialização. Funciona com Manifest V3 e também com Manifest V2, que o Chrome de fábrica já terminou de desligar; assim, bloqueadores de conteúdo MV2 e ferramentas internas mais antigas continuam rodando. Em headless também.

Em todos os planos, no Windows e no Linux.

Uma lista de pastas

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")

Destaques

O Manifest V2 continua rodando

O conjunto de patches de privacidade do upstream restaura o suporte a MV2, então bloqueadores que só existem em MV2 e ferramentas mais antigas continuam funcionando aqui depois de pararem de funcionar no Chrome.

Headless e headed

As extensões carregam tanto em modo headless quanto em headed, sem precisar de display virtual só para colocar uma para rodar.

O par de flags, já resolvido

Sozinho, o --load-extension é ignorado sob automação. O SDK o define junto com o --disable-extensions-except, e assim a extensão aparece de fato.

Pastas, não arquivos .crx

Aponte para a pasta que contém o manifest.json. Um .crx, descompactado, vira uma pasta dessas.

Windows e Linux

A mesma opção nas duas plataformas, em headed e headless.

Seu código, sua superfície

O Clearcote não esconde extensões. Prefira as que não têm web_accessible_resources, já que uma página pode sondar esses recursos.

Como as extensões são carregadas

Extensões precisam de um perfil onde morar. O launch() roda num perfil descartável, então aceita extensões, assim como launch_persistent_context / launchPersistentContext e serve() (.NET: Extensions). Os únicos launches que não aceitam são os anônimos (ephemeral_profile=False, o launch() da API assíncrona, LaunchAsync no .NET). Navegadores hospedados não carregam extensões.

O Clearcote não consegue instalar nem atualizar extensões pela Chrome Web Store: os patches de privacidade do upstream removem essa integração, então extensões carregadas assim nunca se atualizam sozinhas. Em vez disso, distribua o diretório descompactado junto com a sua automação, o mesmo modelo que o Playwright e o Puppeteer usam.

Uma extensão é observável. Content scripts que reescrevem o DOM, injetam estilos ou bloqueiam requisições mudam o que a página mede, e qualquer página pode buscar os recursos web-accessible declarados. Se você só precisa bloquear requisições, o Network.setBlockedURLs do CDP, na camada de automação, bloqueia por padrão de URL sem nenhuma superfície de extensão e mantém o cache (o route() do Playwright também funciona, mas desliga o cache).

Para que as pessoas usam

Bloqueio de conteúdo

Rode o build MV2 de um bloqueador que o Chrome não carrega mais.

Testar a sua própria extensão

Testes end-to-end de uma extensão, em headless, no CI.

Ferramentas internas

Extensões da empresa para ajudar no login, fazer anotações ou QA, dentro de sessões automatizadas.

O Clearcote foi feito para privacidade, testes, pesquisa e automação lícita. Você é responsável pela forma como o usa e por seguir os termos dos sites que visita.

Qual plano inclui

Em todos os planos, no Windows e no Linux, em modo headed e headless.

Comparar planos

Perguntas frequentes

O Playwright consegue carregar extensões do Chrome em modo headless?

Com o Clearcote, sim. Passe as pastas descompactadas como extensions para o launch() ou para um contexto persistente e elas carregam tanto em headless quanto em headed, sem flags extras.

O Manifest V2 ainda funciona?

Sim. O Chrome de fábrica já terminou de desativar o MV2, mas o conjunto de patches de privacidade do upstream, que é a base do Clearcote, traz o suporte de volta, então extensões MV2 e MV3 rodam lado a lado.

Posso instalar extensões pela Chrome Web Store?

Não. A integração com a Web Store foi removida junto com os outros serviços do Google. Baixe ou compile a extensão, descompacte se for um .crx e passe a pasta.

Por que a minha extensão não aparece?

Normalmente é o caminho: ele tem que apontar para a pasta que contém o manifest.json, e não para a pasta acima dela nem para um .crx. Se um content script nunca roda, confira se o padrão matches dele cobre a URL; http://localhost/* não casa com http://127.0.0.1:8080/.

Os sites conseguem saber que uma extensão está instalada?

Às vezes. Uma página pode perceber as mudanças que um content script faz no DOM e pode tentar buscar os recursos web-accessible que uma extensão declara. Isso vale para qualquer navegador com extensões, e o Clearcote não esconde isso.

Vá mais fundo na documentação

Recursos relacionados

Experimente o Clearcote

Plug-and-play no Playwright e no Puppeteer, coerente até o handshake TLS, com um build de código aberto para começar.

Grátis para um navegador com GitHub. Sem cartão.