A alternativa ao playwright-stealth de código aberto
O playwright-stealth é o jeito mais rápido de adicionar stealth ao Playwright em Python: basta um wrapper para que toda página receba um conjunto de evasões em JavaScript. Mas as evasões são overrides num navegador padrão, e o próprio mantenedor o chama de prova de conceito. O Clearcote define esses valores nativamente no motor, então não há override nenhum para uma página encontrar.
O que é o playwright-stealth?
O playwright-stealth é um port para Python do puppeteer-extra-plugin-stealth, voltado ao Playwright. O port original, de AtuboDad, não é atualizado desde meados de 2024; o nome no PyPI agora é usado por um fork mantido ativamente (Mattwmaster58), que lançou a 2.0 com uma API mais limpa e incorporou os pull requests pendentes. Tem licença MIT e é muito usado: cerca de 2,4 milhões de downloads por mês no PyPI.
Ele funciona registrando init scripts em cada contexto, cada um corrigindo um indício: navigator.webdriver, navigator.languages, plugins, o vendor do WebGL, chrome.runtime e assim por diante. O mantenedor é franco sobre o teto. O README diz para não esperar que ele contorne nada além da detecção de bots mais simples e o descreve como um ponto de partida. Os motivos são estruturais: um override em JavaScript pode ser pego com Function.prototype.toString ou com uma checagem do descritor da propriedade, os init scripts da página não chegam aos Web Workers, e nada no pacote mexe nos efeitos colaterais de CDP do próprio driver do Playwright nem na camada de rede.
Clearcote vs playwright-stealth
| Recurso | Clearcote | playwright-stealth |
|---|---|---|
| Abordagem | Patches em C++ no nível do motor: valores nativos | Init scripts em JavaScript num navegador padrão |
| Emenda detectável | Nenhuma: nativo na página, em iframes e em workers | Overrides visíveis via toString, descritores e releitura em workers |
| Identidade do fingerprint | Persona coerente a partir de uma seed (canvas, WebGL, fontes, navigator) | Alguns valores definidos à mão sobre os reais do host |
| Efeitos colaterais do driver / CDP | Contidos na inicialização (isolated worlds) e no motor | Não tratados; driver padrão do Playwright |
| Coerência de TLS / rede | O ClientHello acompanha a versão do Chrome declarada | Não tratado |
| Framework | Playwright e Puppeteer (Python, Node, .NET) | Playwright (Python) |
| Configuração | Troque o binário do navegador | Envolva o Playwright numa linha |
| Custo | Build aberto grátis; build mais recente grátis com GitHub; Pro $49/mês | Grátis e aberto (MIT) |
Comparação feita em setembro de 2026. O playwright-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 playwright-stealth substitui uma função real do navegador por uma em JavaScript, e essa substituição é observável. O Clearcote muda o valor dentro do Chromium, então a função que a página inspeciona é a nativa de verdade.
A mesma resposta em todo realm
Init scripts aplicam patches na página. Leia o mesmo valor de novo a partir de um Web Worker ou de um iframe novo e você recebe o original, sem patch. Valores no nível do motor batem em todo lugar.
Uma identidade inteira, não um punhado de campos
Uma seed de --fingerprint produz uma máquina consistente em canvas, WebGL, áudio, fontes, tela e hardware, em vez de alguns overrides empilhados sobre o host real.
Mantenha seu código Playwright
O Clearcote é um binário Chromium. Aponte o executable_path para ele, ou use o launch() do SDK, e o resto do seu script Playwright continua igual.
Quando o playwright-stealth pode ser a melhor escolha
- Você quer testar algo em cinco minutos num alvo permissivo e não quer gerenciar um binário de navegador.
- Seus alvos só checam os indícios óbvios, como
navigator.webdriver. - Você já usa o Clearcote e quer saber se ainda precisa do playwright-stealth: não precisa. As evasões dele duplicam valores que o motor já define, e adicionar overrides em JavaScript por cima traz de volta a emenda que o motor elimina.
Perguntas frequentes
O playwright-stealth ainda funciona?
Ele ainda instala e roda, e o fork mantido (2.x) recebe atualizações. Se ele basta ou não depende do alvo. O próprio README avisa que ele só lida com a detecção mais simples, porque overrides em JavaScript podem ser detectados e ele não mexe nas camadas de driver e de rede.
Qual é a diferença entre o playwright-stealth e o Clearcote?
O playwright-stealth injeta JavaScript num Chromium padrão para sobrescrever um conjunto de valores. O Clearcote é um Chromium modificado em que esses valores são nativos, consistentes entre frames e workers, com um fingerprint TLS correspondente por baixo. Você controla os dois com o Playwright comum.
Devo usar o playwright-stealth junto com o Clearcote?
Não. O motor já informa valores coerentes, e empilhar overrides em JavaScript por cima troca funções nativas por outras detectáveis. Inicie o Clearcote com o Playwright puro.
Existe um playwright-stealth para Node.js?
O equivalente em Node é o playwright-extra com o plugin stealth do puppeteer-extra, que tem o mesmo design de overrides em JavaScript. O Clearcote funciona do mesmo jeito em Python, Node e .NET.
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.