En esta guía, le presentaremos puppeteer-extra
, una biblioteca que envuelve puppeteer
para extenderlo con compatibilidad con complementos. ¡Prepárese para llevar su proyecto de scraping de Puppeteer al siguiente nivel! 🚀
es un contenedor liviano para puppeteer
que permite la integración de complementos a través de una interfaz limpia. Si bien no fue desarrollado por el equipo detrás de , este proyecto impulsado por la comunidad tiene cientos de miles de descargas semanales y más de 6000 estrellas en GitHub 📈.
Consulte el está claro que el repositorio puppeteer-extra
ha experimentado un aumento constante en popularidad a lo largo de los años:
User-Agent
en todas las páginas, con soporte para reemplazo dinámico.Sin duda, Puppeteer es una de las mejores . Pero seamos honestos: tiene sus límites, especialmente cuando se enfrenta a tecnologías antibots como la identificación de navegadores y los CAPTCHA. Lea nuestra guía para aprender a lidiar con la automatización de reCAPTCHA .
Puppeteer Extra es como una mejora para Puppeteer, que agrega compatibilidad con complementos para solucionar esos inconvenientes importantes. En lugar de anular o extender todo por ti, envuelve Puppeteer y te permite registrar solo los complementos que necesitas. 🦸
puppeteer-extra
: configuración y complementos para el web scraping npm install puppeteer-extra
⚠️ Nota : puppeteer-extra
requiere puppeteer
para funcionar, así que asegúrese de que ambos paquetes estén instalados en su proyecto.
Luego, debes importar el objeto puppeteer
desde puppeteer-extra
en lugar de la biblioteca puppeteer
:
const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra"
Todo en la API de Puppeteer sigue igual, pero ahora obtienes un poco de magia adicional ✨. El objeto puppeteer
ahora expone un método use()
para conectar complementos adicionales de Puppeteer.
⚙️ Instalación :
npm install puppeteer-extra-plugin-stealth
💡 Uso :
const StealthPlugin = require("puppeteer-extra-plugin-stealth") // for ESM users: // import StealthPlugin from "puppeteer-extra-plugin-stealth" puppeteer.use(StealthPlugin())
Un complemento para evitar que el navegador Puppeteer cargue recursos específicos. Los tipos de recursos admitidos incluyen document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
y other
.
⚙️ Instalación :
npm install puppeteer-extra-plugin-block-resources
💡 Uso :
const BlockResourcesPlugin = require("puppeteer-extra-plugin-block-resources") // for ESM users: // import BlockResourcesPlugin from "puppeteer-extra-plugin-block-resources"
puppeteer.use(BlockResourcesPlugin({ blockedTypes: new Set(["image", "stylesheet"]), }))
puppeteer.use(BlockResourcesPlugin() const browser = await puppeteer.launch() const page = await browser.newPage() blockResourcesPlugin.blockedTypes.add("stylesheet") await page.goto("//www.example.com/", { waitUntil: "domcontentloaded" })
Un complemento para anonimizar el User-Agent
establecido por el navegador controlado por Puppeteer. 🎭
Le brinda la posibilidad de eliminar la cadena 'Headless'
del agente de usuario de Chrome en modo headless y admite el reemplazo dinámico del agente de usuario a través de una función personalizada. Mírelo en acción en nuestra .
⚙️ Instalación :
npm install puppeteer-extra-plugin-anonymize-ua
💡 Uso :
const AnonymizeUAPlugin = require("puppeteer-extra-plugin-anonymize-ua") // for ESM users: // import AnonymizeUAPlugin from "puppeteer-extra-plugin-anonymize-ua"
puppeteer.use(AnonymizeUAPlugin({ stripHeadless: true, }))
puppeteer.use(AnonymizeUAPlugin({ customFn: (ua) => ua.replace("Chrome", "Chromium")}) }))
Al igual que con Playwright , no importa cuán elegante y personalizado sea tu guión de Puppeteer, los sistemas anti-bots avanzados pueden detectarte y bloquearte. Pero, ¿cómo es eso posible? 🤔
La puppeteer-extra-stealth-plugin
te lo explica con detalle:
Nota: considero que se trata de una competencia amistosa en un juego del gato y el ratón bastante interesante. Si el otro equipo (👋) quiere detectar el cromo sin cabeza, todavía hay formas de hacerlo (al menos noté algunas, que abordaré en futuras actualizaciones).Probablemente sea imposible evitar todas las formas de detectar cromo sin cabeza, pero debería ser posible hacerlo tan difícil que resulte prohibitivamente costoso o genere demasiados falsos positivos como para que sea factible.
Por lo tanto, si bien Puppeteer Extra puede esquivar la mayoría de las detecciones de bots básicas como Neo en Matrix, no puede evitar Cloudflare . Claro, podrías , pero incluso eso podría no ser suficiente.
Puppeteer es una de las herramientas de automatización de navegadores más utilizadas en el mundo tecnológico, pero hasta los superhéroes tienen sus límites. La comunidad intervino con puppeteer-extra
, un paquete que le otorga a Puppeteer algunas nuevas capacidades realmente geniales a través de complementos personalizados.