A alternativa ao puppeteer-extra-plugin-stealth de código aberto
O plugin stealth ainda é a forma mais instalada de acoplar evasões ao Puppeteer, com cerca de 840.000 downloads por semana, mas não tem uma versão nova desde março de 2023. Cada evasão é um patch em JavaScript sobre um Chrome padrão, e patches em JavaScript se denunciam. O Clearcote define esses valores nativamente no motor.
O que é o puppeteer-extra-plugin-stealth?
O puppeteer-extra-plugin-stealth (de berstend) é um pacote de módulos de evasão em JavaScript injetados com page.evaluateOnNewDocument antes de os scripts da página rodarem. Cada um corrige um único indício: navigator.webdriver, plugins, chrome.runtime, o vendor do WebGL, iframes, codecs e mais. Tem licença MIT e é extremamente popular, com cerca de 840.000 downloads por semana no npm, e sua abordagem foi portada para o playwright-stealth e o selenium-stealth.
Na prática, ele também está sem manutenção: a última versão no npm (2.11.2) saiu em março de 2023, e o repositório não muda desde meados de 2024. O limite estrutural é anterior a isso. São overrides em JavaScript sobre um motor padrão, e overrides se denunciam via Function.prototype.toString, descritores de propriedade alterados e releituras a partir de Web Workers ou iframes cross-origin, onde o patch não está presente. Ele não muda valores nativos, não mexe em TLS nem em HTTP/2 e não trata o vazamento de CDP do Runtime.enable. O próprio README admite que impedir todas as formas de detectar o Chromium headless provavelmente é impossível.
Clearcote vs puppeteer-extra-plugin-stealth
| Recurso | Clearcote | puppeteer-extra-plugin-stealth |
|---|---|---|
| Abordagem | Patches em C++ no nível do motor: valores nativos | Evasões em JavaScript injetadas em cada documento |
| Emenda detectável | Nenhuma: nativo em todo realm (página, workers, iframes) | Visível via toString, descritores e releitura em workers e iframes |
| Coerência de TLS / rede | Acompanha o Chrome declarado (JA3/JA4 + HTTP/2) | Não tratado |
| Framework | Playwright e Puppeteer (Python, Node, .NET) | Puppeteer (Node); playwright-extra para Playwright |
| Manutenção | Ativa | Última versão em março de 2023 |
| Licença | Build aberto BSD-3 | MIT |
| Custo | Build aberto grátis; build mais recente grátis com GitHub | Grátis e aberto |
Comparação feita em setembro de 2026. O puppeteer-extra-plugin-stealth é Código aberto (MIT); os detalhes mudam — confira o projeto para ver as informações mais recentes.
Por que equipes escolhem o Clearcote
Nativo, não sobrescrito
Cada evasão do plugin stealth é um override em JavaScript que um detector consegue pegar. O Clearcote define os valores no motor, então eles aparecem como nativos e não há override para encontrar.
Coerente entre realms
Patches em JavaScript aplicados à página divergem em Web Workers e iframes cross-origin. Valores no nível do motor batem em todo lugar, o que fecha essa classe de indício.
A camada de rede
O plugin não tem acesso a TLS nem a HTTP/2. O handshake do Clearcote acompanha a versão do Chrome declarada, então o que trafega na rede bate com o JavaScript.
Mantido e verificado
O Clearcote é conferido com testes abertos a cada versão. As evasões do plugin são do início de 2023, e o Chrome já avançou dezenas de versões desde então.
Quando o puppeteer-extra-plugin-stealth pode ser a melhor escolha
- Você já usa o Puppeteer e quer um pacote de evasões de uma linha para alvos permissivos.
- Você precisa de algo com licença MIT para encaixar num scraper Node existente.
- Para páginas de teste públicas e detecção mais antiga, é rápido e às vezes basta.
Perguntas frequentes
O puppeteer-extra-plugin-stealth ainda é mantido?
Não ativamente. A última versão no npm, 2.11.2, foi publicada em março de 2023, e o repositório não é atualizado desde julho de 2024. Ele ainda instala e é muito usado, mas as evasões não acompanharam o ritmo do Chrome.
Por que patches de stealth em JavaScript são detectados?
Porque são overrides sobre uma função real. Um detector pode convertê-la em string (uma função nativa aparece como [native code]; um override mostra o próprio código-fonte), inspecionar o descritor da propriedade ou ler o valor de novo a partir de um iframe novo ou de um Web Worker, onde o patch não está aplicado. Mudanças no nível do motor evitam isso, porque tornam o valor nativo em todo lugar.
Em que o Clearcote é diferente do plugin stealth?
O plugin injeta evasões em JavaScript num Chrome padrão; o Clearcote é um Chromium modificado em que os valores são nativos no motor, coerentes entre workers e iframes, com uma persona de TLS/HTTP-2 à qual o plugin não tem acesso.
Existe uma versão para Playwright?
Sim: o playwright-extra carrega o mesmo plugin em Node, e o playwright-stealth faz o port para Python. Os dois compartilham o mesmo design de overrides em JavaScript.
Leituras relacionadas
Experimente a alternativa de código aberto baseada em Chromium
Grátis e de código aberto, plug-and-play no Playwright e no Puppeteer, coerente até o handshake TLS.
Grátis para um navegador com GitHub. Sem cartão.