Como usar um Puppeteer sem ser detectado

Scraping and Proxy Management Expert
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
npm install puppeteer
language
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
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
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
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.