Quer contornar sistemas de detecção de bots ao automatizar o Chrome? O puppeteer-extra-plugin-stealth é uma ferramenta que ajuda a ocultar rastros de automação, dificultando que sites detectem bots.
Principais pontos:
- O que faz: Oculta marcadores de automação (como
navigator.webdriver) e imita o comportamento de navegadores reais. - Como funciona: Ajusta impressões digitais do navegador, introduz padrões naturais de navegação e gerencia detalhes da sessão.
- Por que é importante: Ajuda a evitar a detecção por sistemas antibot avançados, como desafios CAPTCHA e fingerprinting de navegadores.
- Configuração: Instale
Puppeteer,puppeteer-extrae o plugin stealth via npm ou Yarn. Use o plugin stealth para configurar seu navegador para se comportar como um usuário real.
Exemplo rápido:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com');
await browser.close();
})();
Essa ferramenta é ideal para automatizar tarefas em sites com detecção rigorosa de bots. Saiba como configurá-la, otimizar suas definições e simular comportamentos humanos para evitar a detecção.
Tutorial de Nodejs Puppeteer nº 7 - Contornar detecção 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 aborda o processo de instalação, a configuração inicial e os testes para garantir que tudo funcione como esperado.
Instalação dos pacotes necessários
Primeiro, instale Puppeteer, Puppeteer Extra e o plugin Stealth. Abra seu terminal e execute o seguinte comando:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Se você usa Yarn, utilize este comando:
yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Etapas da configuração inicial
Após a instalação, configure seu arquivo JavaScript para integrar o plugin stealth. Veja o código necessário:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://nowsecure.nl/');
await browser.close();
})();
Importante: Importe o Puppeteer de 'puppeteer-extra' em vez de 'puppeteer' para acessar as funcionalidades adicionais [2].
Depois de concluir a configuração, é hora de verificar se tudo está funcionando corretamente.
Testando sua instalação
Execute estes testes para confirmar que sua configuração funciona como esperado:
- Teste de funcionalidade básica: Tente navegar até um site que detecta bots e analise os resultados.
- Verificação por captura de tela: Faça uma captura de tela da página de teste para confirmar que os recursos stealth foram aplicados corretamente.
- Verificação de pontuação do reCAPTCHA: Observe suas pontuações do reCAPTCHA v3 para determinar se houve melhorias.
Para uma verificação rápida, use o seguinte script:
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com');
await page.waitForTimeout(5000);
await page.screenshot({ path: 'stealth-test.png' });
await browser.close();
})();
Esse script fará uma captura de tela da página de teste. Verifique a imagem para confirmar se seu navegador se comporta como um navegador Chrome comum, sem revelar sinais de automação.
Quando sua configuração passar nesses testes, você estará pronto para explorar os recursos avançados do plugin, abordados na próxima seção.
Principais recursos stealth
O puppeteer-extra-plugin-stealth utiliza diversas técnicas para tornar a navegação automatizada mais difícil de detectar.
Mascaramento da identidade do navegador
O plugin ajusta propriedades importantes do navegador para imitar um navegador Chrome típico. Isso inclui:
- Substituir o user-agent padrão
HeadlessChromepor uma opção mais natural - Definir cabeçalhos
Accept-Languagerealistas - Ajustar o suporte a codecs para reprodução de mídia
- Modificar
navigator.vendorpara corresponder ao comportamento padrão do Chrome
Essas alterações ajudam a criar um perfil de navegador que parece pertencer a um usuário comum, e não a um bot. Além disso, o plugin emprega técnicas antifingerprinting para reduzir ainda mais o risco de detecção.
Métodos antifingerprinting
| Recurso | Método | Objetivo |
|---|---|---|
| Emulação de processador | Limita os processadores lógicos a 4 | Imita o hardware típico de usuários |
| Emulação de plugins | Simula navigator.mimeTypes e plugins | Imita a funcionalidade padrão do Chrome |
| Propriedades da janela | Adiciona outerWidth e outerHeight | Completa 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 compatível com o que os sites esperam de usuários reais.
Remoção de marcadores de automação
Para disfarçar ainda mais a automação, o plugin remove ou modifica sinais reveladores de atividade de bots:
- Exclui a propriedade
navigator.webdriver - Adiciona os objetos
chrome.appechrome.csi, presentes em navegadores Chrome comuns - Oculta o atributo
sourceurlem scripts do Puppeteer - Ajusta propriedades de
permissionspara corresponder ao comportamento natural do navegador
Gerenciamento de CAPTCHA
O plugin também ajuda a reduzir desafios CAPTCHA ao manter um comportamento consistente do navegador e gerenciar sessões com eficiência. Isso cria um padrão de navegação alinhado à atividade humana, permitindo contornar a maioria dos testes de detecção de bots em plataformas como sannysoft.com [2]. No entanto, sistemas antibot avançados, como os usados pela Cloudflare, ainda podem detectar automação em alguns casos [1].
sbb-itb-23997f1
Configuração personalizada
A configuração personalizada permite ajustar as definições stealth 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 gerenciar seus módulos de evasão para sites específicos. Você pode ativar ou desativar módulos conforme necessário:
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const stealth = StealthPlugin({
webglVendor: "Google Inc. (Intel)",
webglRenderer: "Intel Iris OpenGL Engine",
navigator: {
platform: "MacIntel",
languages: ["en-US", "en"]
}
})
Após configurar os módulos stealth, você pode ajustar o comportamento do navegador para imitar melhor a atividade de usuários reais.
Configurações de comportamento do navegador
Ajuste os parâmetros do navegador para simular uma experiência de navegação autêntica:
| Categoria | Opções | Objetivo |
|---|---|---|
| Identidade do usuário | User-Agent, plataforma, idiomas | Cria uma identidade consistente para o navegador |
| Perfil de hardware | Fornecedor WebGL, dimensões da tela | Imita características reais do dispositivo |
| Ambiente de execução | Objetos de runtime 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:
const randomDelay = (min, max) => {
return Math.floor(Math.random() * (max - min + 1) + min);
}
await page.waitForTimeout(randomDelay(1000, 3000));
Adicionar esses atrasos ajuda sua automação a se parecer mais com o comportamento humano.
Configuração de proxy
Usar proxies durante a inicialização do navegador aumenta o anonimato:
const browser = await puppeteer.launch({
args: [
`--proxy-server=http://proxy.example.com:8080`,
'--disable-features=IsolateOrigins,site-per-process'
]
});
"Provavelmente é impossível impedir todas as formas de detectar o Chromium headless, mas deve ser possível tornar isso tão difícil que o custo se torne proibitivo ou gere falsos positivos demais para ser viável." - TiZho, colaborador do GitHub [3]
Alterne os proxies e configure failover automático para manter uma conectividade confiável. Essas configurações ajudam a minimizar os riscos de detecção enquanto garantem desempenho estável.
Boas práticas de stealth
Para manter as sessões automatizadas fora do radar, planejamento e execução cuidadosos são fundamentais.
Padrões naturais de navegação
Simule uma navegação realista adicionando atrasos e ações aleatórias:
async function emulateHumanBehavior(page) {
// Random scrolling behavior
await page.evaluate(() => {
window.scrollBy({
top: Math.random() * 500,
behavior: 'smooth'
});
});
// Random pauses between actions
await page.waitForTimeout(1500 + Math.random() * 2500);
}
| Padrão de comportamento | Implementação | Objetivo |
|---|---|---|
| Movimento do mouse | Curvas e velocidades aleatórias | Imita o movimento natural do cursor |
| Interação com a página | Varie a profundidade da rolagem e as pausas | Simula hábitos de leitura |
| Tempo de navegação | Atrasos aleatórios (1,5 a 4 segundos) | Evita padrões de tempo previsíveis |
| Velocidade de digitação | Intervalos aleatórios entre teclas | Imita o comportamento humano de digitação |
Essas interações simuladas funcionam em conjunto com as configurações descritas anteriormente.
Gerenciamento de sessão
O tratamento adequado das sessões garante que as configurações stealth permaneçam consistentes. Use armazenamento persistente para salvar cookies e dados de sessão:
const browserContext = await browser.createIncognitoBrowserContext({
userDataDir: './sessions/user1',
persistentContext: true
});
Você também pode gerenciar cookies de maneira eficiente:
// Remove specific cookies but keep session-critical data
await page.deleteCookie({
name: '_ga',
domain: '.example.com'
});
Diretrizes de uso
Combine as técnicas acima com estas etapas práticas para uma automação melhor:
Gerenciamento da taxa de solicitações: Comece com um atraso de 2 segundos entre solicitações e aumente-o caso CAPTCHAs apareçam.
Tratamento de erros: Crie um sistema de tentativas para lidar com solicitações com falha:
const maxRetries = 3; const baseDelay = 2000; async function fetchWithRetry(page, url) { for (let i = 0; i < maxRetries; i++) { try { return await page.goto(url); } catch (error) { await page.waitForTimeout(baseDelay * Math.pow(2, i)); } } }Rotação de proxies: Use vários endereços IP para evitar ser sinalizado por atividade excessiva.
"Provavelmente é impossível impedir todas as formas de detectar o Chromium headless, mas deve ser possível tornar isso tão difícil que o custo se torne proibitivo ou gere falsos positivos demais para ser viável." - TiZho, colaborador do GitHub [3]
Acompanhe a evolução dos métodos de detecção antibot e ajuste suas configurações conforme necessário. Essas práticas complementam as técnicas stealth abordadas anteriormente no artigo.
Conclusão
Veja um resumo rápido dos principais pontos e dicas para usar o Puppeteer-extra-plugin-stealth de forma eficaz.
Principais benefícios
O Puppeteer-extra-plugin-stealth ajuda a automatizar a navegação sem ser sinalizado. Ele funciona ocultando marcadores de automação por meio de módulos de evasão integrados [2].
Alguns recursos importantes incluem:
- Remover o identificador 'HeadlessChrome' dos cabeçalhos User-Agent.
- Ocultar marcadores críticos de automação, como
navigator.webdriver. - Ajustar impressões digitais do navegador para imitar o comportamento de usuários reais.
- Permitir estratégias de evasão personalizadas para as necessidades de sites específicos.
Dicas de implementação
Para aperfeiçoar sua configuração de automação, tenha estas estratégias em mente:
| Área de foco | Estratégia | Resultado |
|---|---|---|
| Módulos de evasão | Ative apenas os recursos necessários | Menor risco de detecção e melhor desempenho |
| Gerenciamento de erros | Use lógica de tentativas com backoff exponencial | Tratamento mais confiável de problemas temporários |
| Gerenciamento de sessão | Use contextos persistentes de navegador | Perfil stealth consistente entre sessões |
Sugestões adicionais:
- Comece com as configurações stealth padrão e ajuste-as às suas necessidades.
- Mantenha-se atualizado sobre novas técnicas antibot e ajuste sua abordagem de acordo.
- Combine recursos stealth com comportamentos naturais de navegação para obter melhores resultados.
- Priorize um gerenciamento de sessão consistente 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 de atualizações regulares dos seus métodos. Essas dicas, combinadas aos recursos do plugin, criam uma base sólida para uma automação indetectável.


