Како што е нагласено во нашиот водич за стругање веб со Puppeteer , оваа библиотека за автоматизација на прелистувачот е фантастичен сојузник за извлекување податоци од страници со динамична содржина. Сепак, како и секоја друга алатка, има свои недостатоци. Таму влегува Puppeteer Extra!
Во овој водич, ќе ве запознаеме со puppeteer-extra
— библиотека што го обвива puppeteer
за да го прошири со поддршка за приклучоци. Подгответе се да го однесете вашиот проект за стружење Puppeteer на следното ниво! 🚀
Puppeteer Extra е лесна обвивка околу puppeteer
која овозможува интеграција на приклучокот преку чист интерфејс. Иако не е развиен од тимот зад Puppeteer , овој проект управуван од заедницата има стотици илјади неделни преземања и над 6 илјади ѕвезди на GitHub 📈.
Проверете ја табелата со ѕвезди на GitHub подолу - јасно е дека puppeteer-extra
е во постојан пораст на популарноста со текот на годините:
Приклучоците официјално поддржани од Puppeteer Extra се:
User-Agent
на сите страници, со поддршка за динамично заменување.Згора на нив, тој се интегрира со следните приклучоци за заедницата:
Без сомнение, Puppeteer е една од врвните библиотеки на прелистувачи без глава за стружење и тестирање . Но, ајде да бидеме искрени - тоа има свои граници, особено кога се соочуваме со анти-бот технологија како отпечатоци од прелистувач и CAPTCHA. Прочитајте го нашиот водич за да научите како да се справите со автоматизацијата на reCAPTCHA .
Веб-страниците вооружени со одбрана против ботови лесно можат да ги откријат и блокираат скриптите на Puppeteer. Ако само постоеше начин да се прошири и приспособи стандардното однесување на Puppeteer...
…па, токму тоа е Puppeteer Extra!
Puppeteer Extra е како напојување за Puppeteer, додавајќи поддршка за приклучоци за да се решат тие големи недостатоци. Наместо да го замени или прошири сè за вас, го обвиткува Puppeteer и ви дозволува да ги регистрирате само додатоците што ви се потребни. 🦸
puppeteer-extra
: Поставување и приклучоци за веб-гребењеМожете да додадете Puppeteer Extra во зависностите npm на вашиот проект со:
npm install puppeteer-extra
⚠️ Забелешка : puppeteer-extra
бара puppeteer
да работи, затоа проверете дали двата пакета се инсталирани во вашиот проект.
Потоа, треба да го увезете објектот puppeteer
од puppeteer-extra
наместо од библиотеката puppeteer
:
const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra"
Сè во Puppeteer API останува исто, но добивате малку дополнителна магија ✨. Објектот puppeteer
сега изложува метод use()
за приклучување на приклучоците Puppeteer Extra.
Време е да се нурне во тоа што можат да направат овие приклучоци и да видиме како тие ќе ја израмнат вашата игра за гребење на веб!
Puppeteer Extra Plugin Stealth , познат и едноставно како Puppeteer Stealth, вклучува збир на конфигурации дизајнирани да го намалат откривањето на ботови. Ги отфрла карактеристиките и поставките за откривање на Puppeteer што може да го изложат како бот.
За повеќе детали, проверете го нашиот водич за тоа како да избегнете блокирање со Puppeteer Stealth .
⚙️ Монтажа :
npm install puppeteer-extra-plugin-stealth
💡 Употреба :
const StealthPlugin = require("puppeteer-extra-plugin-stealth") // for ESM users: // import StealthPlugin from "puppeteer-extra-plugin-stealth" puppeteer.use(StealthPlugin())
Приклучок за спречување на прелистувачот Puppeteer да вчитува одредени ресурси. Поддржаните типови ресурси вклучуваат document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
other
.
Блокирањето на ресурсите може да се конфигурира и глобално и локално.
⚙️ Монтажа :
npm install puppeteer-extra-plugin-block-resources
💡 Употреба :
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("https://www.example.com/", { waitUntil: "domcontentloaded" })
Приклучок за анонимизирање на User-Agent
поставен од прелистувачот контролиран од Puppeteer. 🎭
Ви дава можност да ја отстраните низата 'Headless'
од корисничкиот агент на Chrome во режим без глава и поддржува динамична замена на корисничкиот агент преку приспособена функција. Погледнете го на дело во нашето упатство за кориснички агенти на Puppeteer .
Откријте кој е најдобриот кориснички агент за стругање на веб!
⚙️ Монтажа :
npm install puppeteer-extra-plugin-anonymize-ua
💡 Употреба :
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")}) }))
Исто како кај Playwright , без разлика колку е мазна и приспособена вашата скрипта Puppeteer, напредните системи против ботови сè уште можат да ве намирисаат и да ве затворат. Но, како е тоа воопшто можно? 🤔
Документацијата puppeteer-extra-stealth-plugin
ви ја разложува:
Ве молиме запомнете: сметам дека ова е пријателско натпреварување во прилично интересна игра со мачки и глушец. Ако другиот тим (👋) сака да открие хром без глава, сè уште има начини да го направи тоа (барем јас забележав неколку, кои ќе ги разгледам во идните ажурирања).
Веројатно е невозможно да се спречат сите начини за откривање на безглавен хром, но би требало да биде возможно да се направи толку тешко што ќе стане економично или ќе предизвика премногу лажно-позитивни за да биде изводливо.
Значи, додека Puppeteer Extra може да ги избегне најосновните откривања на ботови како Neo во Matrix, сигурно не може да го заобиколи Cloudflare . Секако, можете да интегрирате прокси во Puppeteer , но дури и тоа можеби нема да биде доволно.
Проблемот не е самиот Puppeteer (бидејќи да бидеме реални, Puppeteer rocks! 🤘), туку прелистувачот што тој го контролира. Вистинското решение? Моќен прелистувач кој:
Верувале или не, ова не е некој далечен сон. Вистински е и токму она што го нуди Bright Data's Scraping Browser !
Puppeteer е една од најкористените алатки за автоматизација на прелистувачите во светот на технологијата, но дури и суперхероите имаат свои граници. Заедницата се вклучи со puppeteer-extra
, пакет што му дава на Puppeteer некои сериозно кул нови способности преку сопствени приклучоци.
Но, тука е работата: иако овие приклучоци можат да ја направат вашата операција на гребење многу посилна, тие нема магично да ве претворат во дух 👻. Сајтовите со напредно откривање ботови можеби сè уште ќе можат да ве блокираат!
Заобиколете ги сите анти-ботови со Bright Data's Scraping Browser — прелистувач во облак што не може да се открие што беспрекорно се интегрира со Puppeteer . Придружете се на нашата мисија да ја направиме мрежата јавен простор за секого, секаде, дури и преку автоматизирани скрипти.
До следниот пат, продолжете слободно да го истражувате Интернетот! 🌐