Automação invisível: usando puppeteer-extra-plugin-stealth para ignorar a proteção de bots
Aprenda como usar técnicas de automação furtiva de forma eficaz para contornar sistemas de detecção de bots durante a navegação.

Deseja ignorar os sistemas de detecção de bots durante a automação Chrome? O método da puppeteer-extra-plugin-stealth é uma ferramenta que ajuda a ocultar impressões digitais de automação, dificultando a detecção de bots por sites.
Key Takeaways:
- O que faz: Marcadores de automação de máscaras (como
navigator.webdriver) e imita o comportamento real do navegador. - Como funciona: Ajusta as impressões digitais do navegador, introduz padrões naturais de navegação e gerencia os detalhes da sessão.
- Por que isso é importante: Ajuda a evitar a detecção de sistemas anti-bot avançados, como desafios de CAPTCHA e impressão digital do navegador.
- Configuração: Instale
Puppeteer,puppeteer-extra, e o plugin stealth via npm or fio. Use o plugin stealth para configurar seu navegador para se comportar como um usuário real.
Exemplo rápido:
<span class="hljs-keyword">import</span> puppeteer <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title class_">StealthPlugin</span> <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>;
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>());
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://bot.sannysoft.com'</span>);
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Esta ferramenta é perfeita para automatizar tarefas em sites com detecção estrita de bots. Aprenda como configurá-la, otimizar suas configurações e simular comportamento humano para permanecer sem ser detectado.
Nodejs Marionetista Tutorial nº 7 - Detecção de bypass usando ...
Instalação e configuração
Para começar, você precisará instalar os pacotes necessários e configurá-los para minimizar a detecção durante a automação. Esta seção abrange o processo de instalação, configuração inicial e testes para garantir que tudo funcione conforme o esperado.
Instalação do pacote necessário
Primeiro, instale Marionetista, Marionetista Extra, e a Plugin furtivo. Abra seu terminal e execute o seguinte comando:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Se você estiver usando o Yarn, use este comando:
yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Etapas iniciais de configuração
Após a instalação, configure seu arquivo JavaScript para integrar o plugin stealth. Aqui está o código que você precisa:
<span class="hljs-keyword">import</span> puppeteer <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title class_">StealthPlugin</span> <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>;
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>());
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://nowsecure.nl/'</span>);
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Importante: Certifique-se de importar o Puppeteer de 'puppeteer-extra' em vez de 'puppeteer' para acessar a funcionalidade adicionada .
Depois de concluir a configuração, é hora de verificar se tudo está funcionando corretamente.
Testando sua instalação
Execute estes testes para confirmar se sua configuração está funcionando conforme o esperado:
- Teste de funcionalidade básica: Tente navegar até um site que detecte bots e analise os resultados.
- Verificação de captura de tela: Faça uma captura de tela da página de teste para confirmar se os recursos de stealth foram aplicados corretamente.
- Verificação de pontuação do reCAPTCHA: Observe suas pontuações do reCAPTCHA v3 para determinar se há alguma melhoria.
Para uma verificação rápida, use o seguinte script:
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://bot.sannysoft.com'</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">5000</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">screenshot</span>({ <span class="hljs-attr">path</span>: <span class="hljs-string">'stealth-test.png'</span> });
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Este script fará uma captura de tela da página de teste. Verifique a captura de tela para ver se seu navegador se comporta como um navegador Chrome comum sem revelar sinais de automação.
Depois que sua configuração passar nesses testes, você estará pronto para mergulhar nos recursos avançados do plugin, que são abordados na próxima seção.
Principais recursos de Stealth
O método da puppeteer-extra-plugin-stealth usa várias técnicas para tornar a navegação automatizada mais difícil de detectar.
Máscara de identidade do navegador
O plugin ajusta as principais propriedades do navegador para imitar um navegador Chrome típico. Elas incluem:
- Substituindo o padrão
HeadlessChromeuser-agent com um mais natural - Configuração realista
Accept-Languagecabeçalhos - Ajustando o suporte ao codec para reprodução de mídia
- Modificando
navigator.vendorpara corresponder ao comportamento padrão do Chrome
Essas mudanças ajudam a criar um perfil de navegador que parece um usuário comum, não um bot. Além disso, o plugin emprega técnicas anti-impressão digital para reduzir ainda mais o risco de detecção.
Métodos anti-impressão digital
| Característica | Forma | Propósito |
|---|---|---|
| Emulação de processador | Limita os processadores lógicos a 4 | Imita o hardware típico do usuário |
| Emulação de plugin | Simulações de navigator.mimeTypes e plugins | Imita a funcionalidade padrão do Chrome |
| Propriedades da janela | Adiciona largura externa e altura externa. | Conclui a simulação do navegador |
| Propriedades do fornecedor | Ajusta o identificador do Google no Chrome | Ajuda a evitar a detecção de automação |
Esses métodos garantem que o navegador se comporte de uma maneira alinhada com o que os sites esperam dos usuários reais.
Removendo marcadores de automação
Para disfarçar ainda mais a automação, o plugin remove ou modifica sinais reveladores de atividade de bot:
- Exclui o
navigator.webdriverpropriedade - Adiciona
chrome.appechrome.csiobjetos, que estão presentes em navegadores Chrome regulares - Esconde o
sourceurlatributo em scripts do Puppeteer - Ajusta
permissionspropriedades para corresponder ao comportamento natural do navegador
Gerenciamento de CAPTCHA
O plugin também ajuda a reduzir os desafios de CAPTCHA, mantendo o comportamento consistente do navegador e gerenciando as sessões de forma eficaz. Isso cria um padrão de navegação alinhado à atividade humana, permitindo que ele ignore a maioria dos testes de detecção de bots em plataformas como sannysoft.com. . No entanto, sistemas anti-bot avançados, como os usados por Cloudflare, ainda pode detectar automação em alguns casos .
sbb-itb-23997f1
Configuração Personalizada
A configuração personalizada permite que você ajuste as configurações de furtividade e o comportamento do navegador, ajudando você a evitar a detecção de forma mais eficaz.
Configurações do módulo Stealth
O Puppeteer Stealth permite que você gerencie seus módulos de evasão para sites específicos. Você pode habilitar ou desabilitar módulos conforme necessário:
<span class="hljs-keyword">const</span> <span class="hljs-title class_">StealthPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>)
<span class="hljs-keyword">const</span> stealth = <span class="hljs-title class_">StealthPlugin</span>({
<span class="hljs-attr">webglVendor</span>: <span class="hljs-string">"Google Inc. (Intel)"</span>,
<span class="hljs-attr">webglRenderer</span>: <span class="hljs-string">"Intel Iris OpenGL Engine"</span>,
<span class="hljs-attr">navigator</span>: {
<span class="hljs-attr">platform</span>: <span class="hljs-string">"MacIntel"</span>,
<span class="hljs-attr">languages</span>: [<span class="hljs-string">"en-US"</span>, <span class="hljs-string">"en"</span>]
}
})
Depois de configurar os módulos stealth, você pode ajustar o comportamento do navegador para imitar melhor a atividade real do usuário.
Configurações de comportamento do navegador
Ajuste os parâmetros do navegador para imitar uma experiência de navegação genuína:
| Categoria | Opções | Propósito |
|---|---|---|
| Identidade do usuário | Agente do usuário, plataforma, idiomas | Cria uma identidade de navegador consistente |
| Perfil de Hardware | Fornecedor WebGL, Dimensões da tela | Imita as características reais do dispositivo |
| Ambiente de execução | Objetos de tempo de execução do Chrome, propriedades do Navigator | Emula o comportamento normal do navegador |
Introduza atrasos naturais entre as ações para tornar a automação menos detectável:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">randomDelay</span> = (<span class="hljs-params">min, max</span>) => {
<span class="hljs-keyword">return</span> <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">floor</span>(<span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * (max - min + <span class="hljs-number">1</span>) + min);
}
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-title function_">randomDelay</span>(<span class="hljs-number">1000</span>, <span class="hljs-number">3000</span>));
Adicionar esses atrasos ajuda sua automação a se assemelhar ao comportamento humano.
Configuração de proxy
O uso de proxies durante a inicialização do navegador aumenta o anonimato:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [
<span class="hljs-string">`--proxy-server=http://proxy.example.com:8080`</span>,
<span class="hljs-string">'--disable-features=IsolateOrigins,site-per-process'</span>
]
});
"É provavelmente impossível evitar todas as maneiras de detectar o cromo sem cabeça, mas deve ser possível torná-lo tão difícil que se torne proibitivo em termos de custo ou acione muitos falsos positivos para ser viável." - TiZho, colaborador do GitHub
Gire proxies e configure failover automático para manter conectividade confiável. Essas configurações ajudam a minimizar riscos de detecção enquanto garantem desempenho estável.
Melhores práticas de Stealth
Para manter as sessões automatizadas sob controle, planejamento e execução cuidadosos são essenciais.
Padrões Naturais de Navegação
Simule uma navegação realista adicionando atrasos e ações aleatórias:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">emulateHumanBehavior</span>(<span class="hljs-params">page</span>) {
<span class="hljs-comment">// Random scrolling behavior</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">evaluate</span>(<span class="hljs-function">() =></span> {
<span class="hljs-variable language_">window</span>.<span class="hljs-title function_">scrollBy</span>({
<span class="hljs-attr">top</span>: <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * <span class="hljs-number">500</span>,
<span class="hljs-attr">behavior</span>: <span class="hljs-string">'smooth'</span>
});
});
<span class="hljs-comment">// Random pauses between actions</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">1500</span> + <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * <span class="hljs-number">2500</span>);
}
| Padrão de comportamento | Implementação | Propósito |
|---|---|---|
| Movimento do mouse | Curvas e velocidades aleatórias | Imita o movimento natural do cursor |
| Interação de página | Varie a profundidade da rolagem e as pausas | Simula hábitos de leitura |
| Tempo de navegação | Atrasos aleatórios (1.5–4 segundos) | Evita padrões de tempo previsíveis |
| Velocidade de entrada | Intervalos de pressionamento de tecla aleatórios | Imita o comportamento de digitação humana |
Essas interações simuladas funcionam junto com as configurações descritas anteriormente.
Gerenciamento de Sessões
O tratamento adequado da sessão garante que as configurações de stealth permaneçam consistentes. Use armazenamento persistente para salvar cookies e dados de sessão:
<span class="hljs-keyword">const</span> browserContext = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">createIncognitoBrowserContext</span>({
<span class="hljs-attr">userDataDir</span>: <span class="hljs-string">'./sessions/user1'</span>,
<span class="hljs-attr">persistentContext</span>: <span class="hljs-literal">true</span>
});
Você também pode gerenciar cookies de forma eficaz:
<span class="hljs-comment">// Remove specific cookies but keep session-critical data</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookie</span>({
<span class="hljs-attr">name</span>: <span class="hljs-string">'_ga'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>
});
Diretrizes de uso
Combine as técnicas acima com estas etapas práticas para melhor automação:
Gerenciamento de taxas de solicitação: Comece com um atraso de 2 segundos entre as solicitações e aumente-o se surgirem CAPTCHAs.
Tratamento de erros: Crie um sistema de nova tentativa para lidar com solicitações com falha:
<span class="hljs-keyword">const</span> maxRetries = <span class="hljs-number">3</span>; <span class="hljs-keyword">const</span> baseDelay = <span class="hljs-number">2000</span>; <span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">fetchWithRetry</span>(<span class="hljs-params">page, url</span>) { <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i < maxRetries; i++) { <span class="hljs-keyword">try</span> { <span class="hljs-keyword">return</span> <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url); } <span class="hljs-keyword">catch</span> (error) { <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(baseDelay * <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">pow</span>(<span class="hljs-number">2</span>, i)); } } }Rotação de proxy: Use vários endereços IP para evitar ser sinalizado por atividade excessiva.
"É provavelmente impossível evitar todas as maneiras de detectar o cromo sem cabeça, mas deve ser possível torná-lo tão difícil que se torne proibitivo em termos de custo ou acione muitos falsos positivos para ser viável." - TiZho, colaborador do GitHub
Fique de olho nos métodos de detecção anti-bot em evolução e ajuste suas configurações conforme necessário. Essas práticas complementam as técnicas de stealth abordadas anteriormente no artigo.
Conclusão
Aqui está um rápido resumo dos principais pontos e dicas para usar Marionetista-extra-plugin-stealth de forma eficaz.
principais Benefícios
Puppeteer-extra-plugin-stealth ajuda a automatizar a navegação sem ser sinalizado. Funciona ocultando marcadores de automação usando módulos de evasão integrados .
Alguns recursos principais incluem:
- Removendo o identificador 'HeadlessChrome' dos cabeçalhos do User-Agent.
- Ocultar marcadores de automação críticos, como
navigator.webdriver. - Ajustando as impressões digitais do navegador para imitar o comportamento real do usuário.
- Permitindo estratégias de evasão personalizadas para necessidades específicas do site.
Dicas para implementação
Para refinar sua configuração de automação, tenha estas estratégias em mente:
| Área de foco | Estratégia | Resultado |
|---|---|---|
| Módulos de Evasão | Habilite apenas os recursos necessários | Menor risco de detecção, melhor desempenho |
| Gestão de Erros | Use lógica de repetição com recuo exponencial | Tratamento mais confiável de problemas temporários |
| Tratamento de Sessão | Use contextos de navegador persistentes | Perfil stealth consistente em todas as sessões |
Sugestões adicionais:
- Comece com as configurações padrão de stealth e depois ajuste-as para atender às suas necessidades.
- Mantenha-se atualizado sobre novas técnicas anti-bot e ajuste sua abordagem adequadamente.
- Combine recursos furtivos com comportamentos naturais de navegação para obter melhores resultados.
- Concentre-se no gerenciamento consistente de sessões para evitar a detecção.
Embora nenhuma configuração seja 100% infalível, combinar várias táticas de evasão torna a detecção muito mais difícil. O sucesso depende de uma configuração cuidadosa e atualizações regulares dos seus métodos. Essas dicas, combinadas com os recursos do plugin, criam uma base sólida para automação indetectável.
Artigos Relacionados
- Como funciona a detecção de navegador sem cabeça e como ignorá-la
- Automação de formulários com Puppeteer: entrada de texto, preenchimento de formulários e simulação de usuário
- Gerenciamento de agente de usuário no Puppeteer para emulação de dispositivo
- Estratégias para contornar a proteção do Cloudflare com o Puppeteer



