Cómo usar Puppeteer sin ser detectado

Scraping and Proxy Management Expert
Los sitios web de hoy en día emplean software anti-bot que puede identificar a los raspadores. La mejor defensa contra un proceso de raspado fluido es el uso de técnicas de enmascaramiento apropiadas, como los navegadores sin cabeza.
Cuando se realiza raspado web, Puppeteer es un Chrome sin cabeza que puede imitar la actividad real del usuario para evadir los anti-bots como Cloudflare. ¿Cómo se aborda entonces?
En esta publicación se tratarán las mejores técnicas para utilizar Puppeteer para raspar sin ser detectado. Sin embargo, antes de eso...
Puppeteer: ¿Qué es?
Un software Node.js llamado Puppeteer ofrece una API de alto nivel para acceder programáticamente a un navegador Chromium sin cabeza.
Es fácil de instalar con Yarn o npm, y una de sus principales ventajas es que puede acceder y modificar el protocolo DevTools.
¿Pueden los anti-bots identificar a Puppeteer?
De hecho, estos anti-bots pueden identificar navegadores sin cabeza como Selenium o Puppeteer.
Intentemos rastrear NowSecure como un ejemplo rápido de raspado para demostrar esto. Este sitio web te notifica si has superado la protección o no usando bots para verificar las pruebas.
Para lograr eso, primero instalaremos Node.js, y una vez que eso esté terminado, instalaremos Puppeteer ejecutando el siguiente código de comando simple.
language
npm install puppeteer
language
const puppeteer = require('puppeteer');
(async () => {
// Iniciar el navegador
const browser = await puppeteer.launch();
// Crear una nueva página con el contexto del navegador predeterminado
const page = await browser.newPage();
// Establecer la vista de la página
await page.setViewport({ width: 1280, height: 720 });
// Ir al sitio web objetivo
await page.goto('https://nowsecure.nl/');
// Esperar la verificación de seguridad
await page.waitForTimeout(30000);
// Tomar captura de pantalla
await page.screenshot({ path: 'image.png', fullPage: true });
// Cierra el navegador y todas sus páginas
await browser.close();
})();
Por lo tanto, en ese ejemplo, creamos una nueva página del navegador y visitamos el sitio web objetivo usando la configuración básica de Puppeteer. Después de la verificación de seguridad, tomamos una captura de pantalla.
3 formas de prevenir la detección de Puppeteer
Lograr una operación de rastreo sin problemas puede lograrse en su mayoría evitando la detección de bots de Puppeteer. Aquí tienes cómo evitar ser bloqueado al raspar y evitar la detección de Puppeteer:
1. Utilizar Proxys
El rastreo de IP es una de las técnicas anti-bot más populares, en la que el sistema de detección de bots monitoriza las peticiones del sitio web. Además, el anti-bot puede identificar el raspador Puppeteer cuando una IP envía un gran número de consultas rápidamente.
Puedes utilizar proxies, que actúan como una puerta de enlace entre los usuarios e Internet, para evadir la detección en Puppeteer. Como resultado, el proxy recibe peticiones del servidor y las reenvía a nosotros junto con los datos de respuesta.
Para lograr esto, podemos ejecutar Puppeteer y añadir un proxy al argumento args
de la siguiente manera:
language
const puppeteer = require('puppeteer');
const proxy = ''; // Añade tu proxy aquí
(async () => {
// Iniciar el navegador con un proxy
const browser = await puppeteer.launch({args: ['--proxy-server=${proxy}']});
// ... continuar como antes
})();
¿Estás cansado de los bloqueos continuos de raspado web?
Scrapeless: ¡la mejor solución de raspado online todo en uno disponible!
Mantente anónimo y evita las prohibiciones basadas en IP con nuestra rotación inteligente y de alto rendimiento de proxies:
¡Pruébalo gratis!
2. Cabeceras
Los detalles de contexto y metadatos sobre la petición HTTP están contenidos en las cabeceras. Indica si la herramienta es un bot o un navegador web estándar. Al añadir las cabeceras apropiadas en la petición HTTP, puedes ayudar a prevenir el descubrimiento.
Puedes ampliar la funcionalidad de Puppeteer añadiendo nuevas cabeceras como User-Agent, ya que opera bajo headlessChrome
de forma predeterminada. Esta cabecera ampliamente utilizada, que incluye la aplicación, el sistema operativo, el proveedor y la versión de la petición, se utiliza en el raspado web.
language
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Añadir cabeceras
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'
});
// ... continuar como antes
})();
3. Limitar las peticiones
Como se mencionó anteriormente, la cantidad de consultas que envía un usuario puede ser utilizada por un anti-bot para monitorear su comportamiento. Además, restringir la cantidad de consultas y pausar entre solicitudes ayuda a prevenir la detección de Puppeteer porque la mayoría de los usuarios no envían cientos de solicitudes por segundo.
Puedes limitar los recursos renderizados en Puppeteer usando la función .setRequestInterception()
.
language
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Limitar solicitudes
await page.setRequestInterception(true);
page.on('request', async (request) => {
if (request.resourceType() == 'image') {
await request.abort();
} else {
await request.continue();
}
});
// ... continuar como antes
})();
Rechazamos las solicitudes de imágenes de Puppeteer configurando .setRequestInterception() = true
. Podemos restringir las consultas de esta manera. Debido a que hay menos recursos que cargar y esperar, también obtendremos raspadores más rápidos.
Conclusión
Con Puppeteer, hay una variedad de técnicas para evadir la detección; en esta publicación, revisaremos los enfoques más efectivos y directos.
Existen restricciones al usar proxies, encabezados, limitar solicitudes y Puppeteer-Stealth, pero pueden ayudarte a completar la tarea. Estas técnicas a menudo se quedan cortas cuando se trata de superar las sofisticadas defensas anti-bot.
Con solo una solicitud de API, Scrapeless administra todos los aspectos de la omisión de anti-bot por ti, incluidas las CAPTCHA y los navegadores sin cabeza que rotan los proxies. Además, empezar es gratis.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.