🥳Junte-se à Comunidade Scrapeless e Solicite sua avaliação gratuita para acessar nosso poderoso kit de ferramentas de Web Scraping!
Voltar 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 Scrapeless, acessamos apenas dados disponíveis publicamente, cumprindo rigorosamente 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 quaisquer atividades ilegais ou infratoras. Não oferecemos garantias e nos isentamos de qualquer responsabilidade pelo uso de informações deste blog ou de links de terceiros. Antes de se envolver em qualquer atividade de scraping, 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