Como se destaca na nosa guía para raspar web con Puppeteer , esta biblioteca de automatización do navegador é un aliado fantástico para extraer datos de sitios de contido dinámico. Aínda así, como calquera outra ferramenta, ten as súas deficiencias. Aí é onde intervén Puppeteer Extra!
Nesta guía, presentámosche puppeteer-extra
, unha biblioteca que envolve puppeteer
para amplialo co soporte de complementos. Prepárate para levar o teu proxecto de raspado de titiriteiros ao seguinte nivel! 🚀
Puppeteer Extra é un puppeteer
lixeiro que permite a integración de complementos a través dunha interface limpa. Aínda que non foi desenvolvido polo equipo detrás de Puppeteer , este proxecto impulsado pola comunidade ten centos de miles de descargas semanais e máis de 6.000 estrelas en GitHub 📈.
Consulte o gráfico de estrelas de GitHub a continuación : está claro que o repositorio puppeteer-extra
foi un aumento constante en popularidade ao longo dos anos:
Os complementos admitidos oficialmente por Puppeteer Extra son:
User-Agent
en todas as páxinas, con soporte para a substitución dinámica.Ademais destes, intégrase cos seguintes complementos da comunidade:
Sen dúbida, Puppeteer é unha das principais bibliotecas de navegadores sen cabeza para raspar e probar . Pero sexamos honestos: ten os seus límites, especialmente cando se enfronta a tecnoloxía anti-bot como a pegada dixital do navegador e os CAPTCHA. Le a nosa guía para saber como xestionar a automatización de reCAPTCHA .
Os sitios web armados con defensas anti-bot poden detectar e bloquear facilmente os scripts de Puppeteer. Se houbese un xeito de ampliar e personalizar o comportamento predeterminado de Puppeteer...
...ben, iso é exactamente o que se trata Puppeteer Extra!
Puppeteer Extra é como unha potenciación para Puppeteer, engadindo compatibilidade con complementos para solucionar eses principais inconvenientes. En lugar de anular ou estender todo por ti, envolve Puppeteer e permíteche rexistrar só os complementos que necesitas. 🦸
puppeteer-extra
: Configuración e complementos para o rascado webPodes engadir Puppeteer Extra ás dependencias npm do teu proxecto con:
npm install puppeteer-extra
⚠️ Nota : puppeteer-extra
require que puppeteer
funcione, así que asegúrate de que os dous paquetes estean instalados no teu proxecto.
Despois, tes que importar o obxecto puppeteer
de puppeteer-extra
en lugar da biblioteca puppeteer
:
const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra"
Todo na API de Puppeteer segue igual, pero obtén un pouco de maxia extra ✨. O obxecto puppeteer
agora expón un método use()
para conectar os complementos de Puppeteer Extra.
É hora de mergullarse no que poden facer estes complementos e ver como subirán de nivel o teu xogo de rascado web.
Puppeteer Extra Plugin Stealth , tamén coñecido simplemente como Puppeteer Stealth, inclúe un conxunto de configuracións deseñadas para reducir a detección de bots. Anula as propiedades e configuracións detectables de Puppeteer que poden expoñelo como un bot.
Para obter máis detalles, consulta a nosa guía sobre como evitar o bloqueo con Puppeteer Stealth .
⚙️ 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 o navegador Puppeteer cargue recursos específicos. Os tipos de recursos admitidos inclúen document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
, other
.
O bloqueo de recursos pódese configurar tanto a nivel global como local.
⚙️ 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"
Despois podes configurar os recursos para bloquear globalmente en todas as páxinas:
puppeteer.use(BlockResourcesPlugin({ blockedTypes: new Set(["image", "stylesheet"]), }))
Do mesmo xeito, pode seleccionar localmente os recursos que se van bloquear:
puppeteer.use(BlockResourcesPlugin() const browser = await puppeteer.launch() const page = await browser.newPage() blockResourcesPlugin.blockedTypes.add("stylesheet") await page.goto("https://www.example.com/", { waitUntil: "domcontentloaded" })
Un complemento para anonimizar o User-Agent
configurado polo navegador controlado por Puppeteer. 🎭
Permíteche eliminar a cadea 'Headless'
do axente de usuario de Chrome no modo sen cabeza e admite a substitución dinámica do axente de usuario mediante unha función personalizada. Mírao en acción na nosa guía do axente de usuario de Puppeteer .
Descubra cal é o mellor axente de usuario para o rascado web!
⚙️ 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"
A continuación, pode configurar o axente de usuario anónimo:
puppeteer.use(AnonymizeUAPlugin({ stripHeadless: true, }))
Ademais, pode configurar un axente de usuario dinámico mediante unha función personalizada:
puppeteer.use(AnonymizeUAPlugin({ customFn: (ua) => ua.replace("Chrome", "Chromium")}) }))
Do mesmo xeito que con Playwright , por moi elegante e personalizado que sexa o teu guión de Puppeteer, os sistemas anti-bot avanzados aínda poden detectarte e apagarte. Pero como é posible iso? 🤔
A documentación puppeteer-extra-stealth-plugin
desagrega para ti:
Teña en conta: considero esta unha competición amigable nun xogo de gato e rato bastante interesante. Se o outro equipo (👋) quere detectar cromo sen cabeza aínda hai formas de facelo (polo menos notei algúns, que abordarei en futuras actualizacións).
Probablemente sexa imposible evitar todas as formas de detectar o cromo sen cabeza, pero debería ser posible facelo tan difícil que se faga un custo prohibitivo ou desencadee demasiados falsos positivos para ser factible.
Entón, aínda que Puppeteer Extra pode esquivar a detección de bots máis básica como Neo en Matrix, seguramente non pode evitar Cloudflare . Por suposto, poderías integrar un proxy en Puppeteer , pero aínda que iso non sexa suficiente.
O problema non é o propio Puppeteer (porque sexamos auténticos, Puppeteer rocks! 🤘), senón o navegador que controla. A verdadeira solución? Un navegador potente que:
Créalo ou non, este non é un soño afastado. É real, e é exactamente o que ofrece o navegador Scraping de Bright Data.
Puppeteer é unha das ferramentas de automatización do navegador máis utilizadas no mundo da tecnoloxía, pero ata os superheroes teñen os seus límites. A comunidade interveu con puppeteer-extra
, un paquete que lle dá a Puppeteer unhas novas habilidades moi interesantes a través de complementos personalizados.
Pero aquí está a cousa: aínda que estes complementos poden facer que a túa operación de rascado sexa moito máis forte, non te converterán nunha pantasma 👻. É posible que os sitios con detección avanzada de bot aínda poidan bloquearte.
Evita todos os anti-bots co navegador Scraping de Bright Data, un navegador na nube non detectable que se integra perfectamente con Puppeteer . Únete á nosa misión de facer da web un espazo público para todos, en todas partes, mesmo a través de scripts automatizados.
Ata a próxima, segue explorando Internet con liberdade! 🌐