🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Como usar um Puppeteer sem ser detectado

James Thompson
James Thompson

Scraping and Proxy Management Expert

24-Sep-2024

Os sites atualmente empregam softwares anti-bot que podem identificar raspadores. A melhor defesa contra um processo de raspagem suave é o uso de técnicas de mascaramento adequadas, como navegadores sem cabeça.

Quando você raspa a web, o Puppeteer é um Chrome sem cabeça que pode imitar a atividade real do usuário para evadir anti-bots como o Cloudflare. Como você o aborda então?

As melhores técnicas para usar o Puppeteer para raspar sem ser detectado serão abordadas neste post. No entanto, antes disso...

Puppeteer: O que é?

Um software Node.js chamado Puppeteer oferece uma API de alto nível para acessar programaticamente um navegador Chromium sem cabeça.

É fácil de instalar com Yarn ou npm, e uma de suas principais vantagens é que ele pode acessar e modificar o Protocolo DevTools.

Os anti-bots podem identificar um Puppeteer?

De fato, esses anti-bots podem identificar navegadores sem cabeça como Selenium ou Puppeteer.

Vamos tentar rastrear o NowSecure como um exemplo rápido de raspagem para demonstrar isso. Este site o notifica se você passou pela proteção ou não usando bots para verificar os testes.

Para fazer isso, primeiro instalaremos o Node.js e, uma vez feito isso, instalaremos o Puppeteer executando o seguinte código de comando simples.

language Copy
npm install puppeteer
language Copy
const puppeteer = require('puppeteer'); 
 
(async () => { 
        // Inicie o navegador 
        const browser = await puppeteer.launch(); 
 
        // Crie uma nova página com o contexto do navegador padrão 
        const page = await browser.newPage(); 
 
        // Definindo a visualização da página 
        await page.setViewport({ width: 1280, height: 720 }); 
 
        // Vá para o site de destino 
        await page.goto('https://nowsecure.nl/'); 
 
        // Aguardar verificação de segurança 
        await page.waitForTimeout(30000); 
 
        // Tirar uma captura de tela 
        await page.screenshot({ path: 'image.png', fullPage: true }); 
 
        // Fecha o navegador e todas as suas páginas 
        await browser.close(); 
})();

Assim, nesse exemplo, criamos uma nova página do navegador e visitamos o site de destino usando a configuração básica do Puppeteer. Após a verificação de segurança, tiramos uma captura de tela.

3 maneiras de evitar a detecção do Puppeteer

Obter uma operação de rastreamento perfeita pode ser principalmente alcançada evitando a detecção do bot Puppeteer. Aqui está como evitar ser bloqueado ao raspar e evitar a detecção do Puppeteer:

1. Usar Proxies

O rastreamento de IP é uma das técnicas anti-bot mais populares, na qual as solicitações do site são monitoradas pelo sistema de detecção de bot. Além disso, o anti-bot pode identificar o raspador Puppeteer quando um IP envia um grande número de consultas rapidamente.

Você pode usar proxies, que atuam como um gateway entre os usuários e a internet, para evitar a detecção no Puppeteer. Como resultado, o proxy recebe solicitações do servidor e as encaminha para nós junto com os dados de resposta.

Para fazer isso, podemos executar o Puppeteer e adicionar um proxy ao argumento args da seguinte forma:

language Copy
const puppeteer = require('puppeteer'); 
const proxy = ''; // Adicione seu proxy aqui 
 
(async () => { 
        // Inicie o navegador com um proxy 
        const browser = await puppeteer.launch({args: ['--proxy-server=${proxy}']}); 
 
        // ... continue como antes 
})();

Você está cansado de bloqueios contínuos de raspagem da web?

Scrapeless: a melhor solução de raspagem online tudo-em-um disponível!

Mantenha o anonimato e evite bloqueios baseados em IP com nossa rotação inteligente de proxy de alto desempenho:

Experimente de graça!

2. Cabeçalhos

Detalhes de contexto e metadados sobre a solicitação HTTP estão contidos nos cabeçalhos. Indica se a ferramenta é um bot ou um navegador da web padrão. Adicionando os cabeçalhos apropriados na solicitação HTTP, você pode ajudar a evitar a descoberta.

Você pode estender a funcionalidade do Puppeteer adicionando novos cabeçalhos como User-Agent, pois ele funciona sob headlessChrome por padrão. Este cabeçalho amplamente utilizado, que inclui o aplicativo, sistema operacional, fornecedor e versão da solicitação, é utilizado na raspagem da web.

language Copy
const puppeteer = require('puppeteer'); 
 
(async () => { 
        const browser = await puppeteer.launch(); 
        const page = await browser.newPage(); 
 
        // Adicionar Cabeçalhos 
        await page.setExtraHTTPHeaders({ 
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 
                'upgrade-insecure-requests': '1', 
                'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8', 
                'accept-encoding': 'gzip, deflate, br', 
                'accept-language': 'en-US,en;q=0.9,en;q=0.8' 
        }); 
 
        // ... continue como antes 
})();

3. Limitar solicitações

Como mencionado anteriormente, a quantidade de consultas que um usuário envia pode ser usada por um anti-bot para monitorar seu comportamento. Além disso, restringir a quantidade de consultas e pausar entre as solicitações ajuda a evitar a detecção do Puppeteer porque a maioria dos usuários não envia centenas de solicitações por segundo.

Você pode limitar os recursos renderizados no Puppeteer usando a função .setRequestInterception().

language Copy
const puppeteer = require('puppeteer'); 
 
(async () => { 
        const browser = await puppeteer.launch(); 
        const page = await browser.newPage(); 
 
        // Limitar solicitações 
        await page.setRequestInterception(true); 
        page.on('request', async (request) => { 
                if (request.resourceType() == 'image') { 
                        await request.abort(); 
                } else { 
                        await request.continue(); 
                } 
        }); 
 
        // ... continuar como antes 
})();

Rejeitamos as solicitações do Puppeteer para imagens definindo .setRequestInterception() = true. Podemos restringir as consultas dessa forma. Como há menos recursos para carregar e aguardar, também obteremos scrapers mais rápidos.

Conclusão

Com o Puppeteer, existem uma variedade de técnicas para evitar a descoberta; nesta postagem, veremos as abordagens mais eficazes e diretas.

Existem restrições ao usar proxies, cabeçalhos, limitar solicitações e Puppeteer-Stealth, mas eles podem ajudá-lo a concluir a tarefa. Essas técnicas frequentemente falham quando se trata de passar por defesas anti-bot sofisticadas.

Com apenas uma solicitação de API, o Scrapeless gerencia todos os aspectos da sobreposição de anti-bot para você, incluindo CAPTCHAs e navegadores sem cabeça que giram proxies. Além disso, começar é gratuito.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo