După cum este subliniat în ghidul nostru pentru web scraping cu Puppeteer , această bibliotecă de automatizare a browserului este un aliat fantastic pentru extragerea datelor de pe site-uri cu conținut dinamic. Totuși, ca orice alt instrument, are deficiențele sale. Aici intervine Puppeteer Extra!
În acest ghid, vă vom prezenta puppeteer-extra
— o bibliotecă care învelește puppeteer
pentru a-l extinde cu suport pentru pluginuri. Pregătește-te să-ți duci proiectul de răzuit Puppeteer la următorul nivel! 🚀
Puppeteer Extra este un înveliș ușor pentru puppeteer
care permite integrarea pluginurilor printr-o interfață curată. Deși nu este dezvoltat de echipa din spatele Puppeteer , acest proiect condus de comunitate are sute de mii de descărcări săptămânale și peste 6.000 stele pe GitHub 📈.
Consultați graficul stelelor GitHub de mai jos - este clar că repo puppeteer-extra
a cunoscut o creștere constantă a popularității de-a lungul anilor:
Pluginurile acceptate oficial de Puppeteer Extra sunt:
User-Agent
pe toate paginile, cu suport pentru înlocuirea dinamică.Pe lângă acestea, se integrează cu următoarele pluginuri comunitare:
Fără îndoială, Puppeteer este una dintre cele mai bune biblioteci de browser fără cap pentru răzuire și testare . Dar să fim sinceri – are limitele sale, mai ales când se confruntă cu tehnologii anti-bot, cum ar fi amprentarea browserului și CAPTCHA-urile. Citiți ghidul nostru pentru a afla cum să faceți față automatizării reCAPTCHA .
Site-urile web înarmate cu apărări anti-bot pot detecta și bloca cu ușurință scripturile Puppeteer. Dacă ar exista o modalitate de a extinde și personaliza comportamentul implicit al lui Puppeteer...
...ei bine, exact despre asta este Puppeteer Extra!
Puppeteer Extra este ca o putere pentru Puppeteer, adăugând suport pentru pluginuri pentru a rezolva aceste dezavantaje majore. În loc să suprascrie sau să extindă totul pentru dvs., acesta include Puppeteer și vă permite să înregistrați numai pluginurile de care aveți nevoie. 🦸
puppeteer-extra
: Configurare și pluginuri pentru Web ScrapingPuteți adăuga Puppeteer Extra la dependențele npm ale proiectului dvs. cu:
npm install puppeteer-extra
⚠️ Notă : puppeteer-extra
necesită ca puppeteer
să funcționeze, așa că asigurați-vă că ambele pachete sunt instalate în proiectul dvs.
Apoi, trebuie să importați obiectul puppeteer
din puppeteer-extra
în loc de biblioteca puppeteer
:
const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra"
Totul în API-ul Puppeteer rămâne la fel, dar obțineți puțină magie în plus ✨. Obiectul puppeteer
expune acum o metodă use()
pentru a conecta pluginurile Puppeteer Extra.
Este timpul să vă scufundați în ceea ce pot face aceste plugin-uri și să vedeți cum vă vor crește nivelul jocului de scraping web!
Puppeteer Extra Plugin Stealth , cunoscut și sub numele de Puppeteer Stealth, include un set de configurații concepute pentru a reduce detectarea botului. Acesta suprascrie proprietățile detectabile și setările lui Puppeteer care l-ar putea expune ca bot.
Pentru mai multe detalii, consultați ghidul nostru despre cum să evitați blocarea cu Puppeteer Stealth .
⚙️ Instalare :
npm install puppeteer-extra-plugin-stealth
💡 Utilizare :
const StealthPlugin = require("puppeteer-extra-plugin-stealth") // for ESM users: // import StealthPlugin from "puppeteer-extra-plugin-stealth" puppeteer.use(StealthPlugin())
Un plugin pentru a împiedica browserul Puppeteer să încarce anumite resurse. Tipurile de resurse acceptate includ document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
, other
.
Blocarea resurselor poate fi configurată atât la nivel global, cât și local.
⚙️ Instalare :
npm install puppeteer-extra-plugin-block-resources
💡 Utilizare :
const BlockResourcesPlugin = require("puppeteer-extra-plugin-block-resources") // for ESM users: // import BlockResourcesPlugin from "puppeteer-extra-plugin-block-resources"
Puteți configura apoi resursele pentru a le bloca global pe toate paginile:
puppeteer.use(BlockResourcesPlugin({ blockedTypes: new Set(["image", "stylesheet"]), }))
În mod similar, puteți selecta local resursele care trebuie blocate:
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 plugin pentru anonimizarea User-Agent
setat de browser-ul controlat de Puppeteer. 🎭
Vă oferă posibilitatea de a elimina șirul 'Headless'
din agentul utilizator Chrome în modul fără cap și acceptă înlocuirea dinamică a agentului utilizator printr-o funcție personalizată. Vedeți-l în acțiune în ghidul nostru pentru agenții de utilizare Puppeteer .
Descoperiți care este cel mai bun agent de utilizare pentru web scraping!
⚙️ Instalare :
npm install puppeteer-extra-plugin-anonymize-ua
💡 Utilizare :
const AnonymizeUAPlugin = require("puppeteer-extra-plugin-anonymize-ua") // for ESM users: // import AnonymizeUAPlugin from "puppeteer-extra-plugin-anonymize-ua"
Apoi, puteți configura agentul utilizator anonim:
puppeteer.use(AnonymizeUAPlugin({ stripHeadless: true, }))
De asemenea, puteți seta un agent de utilizator dinamic printr-o funcție personalizată:
puppeteer.use(AnonymizeUAPlugin({ customFn: (ua) => ua.replace("Chrome", "Chromium")}) }))
La fel ca în cazul Playwright , indiferent cât de elegant și de personalizat este scenariul dvs. Puppeteer, sistemele avansate anti-bot vă pot adulmeca și vă pot opri. Dar cum este posibil asta? 🤔
Documentația puppeteer-extra-stealth-plugin
ul detaliază pentru tine:
Vă rugăm să rețineți: consider aceasta o competiție amicală într-un joc destul de interesant de pisica și șoarecele. Dacă cealaltă echipă (👋) dorește să detecteze cromul fără cap, există încă modalități de a face asta (cel puțin eu am observat câteva, pe care le voi aborda în actualizările viitoare).
Probabil că este imposibil să previi toate modalitățile de detectare a cromului fără cap, dar ar trebui să fie posibil să fie atât de dificil încât să devină prohibitiv sau să declanșeze prea multe fals-pozitive pentru a fi fezabil.
Așadar, în timp ce Puppeteer Extra poate evita detectarea de bază a botului, cum ar fi Neo în Matrix, cu siguranță nu poate ocoli Cloudflare . Sigur, ai putea integra un proxy în Puppeteer , dar chiar și asta ar putea să nu fie suficient.
Problema nu este Puppeteer în sine (pentru că să fim reali, Puppeteer rocks! 🤘), ci browserul pe care îl controlează. Adevărata soluție? Un browser puternic care:
Credeți sau nu, acesta nu este un vis îndepărtat. Este real și este exact ceea ce are de oferit Bright Data's Scraping Browser !
Puppeteer este unul dintre cele mai utilizate instrumente de automatizare a browserului în lumea tehnologiei, dar chiar și supereroii au limitele lor. Comunitatea a intervenit cu puppeteer-extra
, un pachet care îi oferă lui Puppeteer niște abilități noi foarte interesante prin pluginuri personalizate.
Dar iată problema: deși aceste plugin-uri vă pot face operația de răzuire mult mai puternică, nu vă vor transforma în mod magic într-o fantomă 👻. Este posibil ca site-urile cu detectare avansată a botului să vă blocheze!
Ocoliți toți anti-roboții cu Browserul Scraping de la Bright Data — un browser cloud nedetectabil care se integrează perfect cu Puppeteer . Alăturați-vă misiunii noastre de a face Web-ul un spațiu public pentru toată lumea, pretutindeni, chiar și prin scripturi automate.
Până data viitoare, continuă să explorezi internetul cu libertate! 🌐