Seperti yang diserlahkan dalam panduan kami untuk mengikis web dengan Puppeteer , perpustakaan automasi penyemak imbas ini ialah sekutu hebat untuk mengekstrak data daripada tapak kandungan dinamik. Namun, seperti mana-mana alat lain, ia mempunyai kekurangannya. Di situlah Puppeteer Extra melangkah masuk!
Dalam panduan ini, kami akan memperkenalkan anda kepada puppeteer-extra
—perpustakaan yang membungkus puppeteer
untuk memanjangkannya dengan sokongan pemalam. Bersedia untuk membawa projek mengikis Puppeteer anda ke peringkat seterusnya! 🚀
Puppeteer Extra ialah pembalut ringan di sekeliling puppeteer
yang membolehkan penyepaduan pemalam melalui antara muka yang bersih. Walaupun ia tidak dibangunkan oleh pasukan di belakang Puppeteer , projek didorong komuniti ini mempunyai ratusan ribu muat turun mingguan dan lebih 6k bintang di GitHub 📈.
Lihat carta bintang GitHub di bawah —jelas bahawa repo puppeteer-extra
telah meningkat secara berterusan dalam populariti selama ini:
Pemalam yang disokong secara rasmi oleh Puppeteer Extra ialah:
User-Agent
pada semua halaman, dengan sokongan untuk penggantian dinamik.Selain itu, ia disepadukan dengan pemalam komuniti berikut:
Tidak syak lagi, Puppeteer ialah salah satu perpustakaan penyemak imbas tanpa kepala teratas untuk mengikis dan menguji . Tetapi jujurlah—ia mempunyai hadnya, terutamanya apabila menghadapi teknologi anti-bot seperti cap jari penyemak imbas dan CAPTCHA. Baca panduan kami untuk mengetahui cara menangani automasi reCAPTCHA .
Tapak web yang dilengkapi dengan pertahanan anti-bot boleh mengesan dan menyekat skrip Puppeteer dengan mudah. Jika ada cara untuk melanjutkan dan menyesuaikan tingkah laku lalai Puppeteer...
…baiklah, itulah maksud Puppeteer Extra!
Puppeteer Extra adalah seperti peningkatan kuasa untuk Puppeteer, menambahkan sokongan pemalam untuk menangani kelemahan utama tersebut. Daripada mengatasi atau memanjangkan segala-galanya untuk anda, ia membungkus Puppeteer dan membenarkan anda mendaftar hanya pemalam yang anda perlukan. 🦸
puppeteer-extra
: Persediaan dan Pemalam untuk Mengikis WebAnda boleh menambah Puppeteer Extra pada kebergantungan npm projek anda dengan:
npm install puppeteer-extra
⚠️ Nota : puppeteer-extra
memerlukan puppeteer
untuk bekerja, jadi pastikan kedua-dua pakej dipasang dalam projek anda.
Kemudian, anda perlu mengimport objek puppeteer
daripada puppeteer-extra
dan bukannya perpustakaan puppeteer
:
const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra"
Segala-galanya dalam Puppeteer API kekal sama, tetapi anda mendapat sedikit keajaiban tambahan ✨. Objek puppeteer
kini mendedahkan kaedah use()
untuk memasang pemalam Puppeteer Extra.
Masa untuk menyelami perkara yang boleh dilakukan oleh pemalam ini dan lihat bagaimana ia akan meningkatkan permainan mengikis web anda!
Puppeteer Extra Plugin Stealth , juga dikenali sebagai Puppeteer Stealth, termasuk set konfigurasi yang direka untuk mengurangkan pengesanan bot. Ia mengatasi sifat dan tetapan Puppeteer yang boleh dikesan yang mungkin mendedahkannya sebagai bot.
Untuk butiran lanjut, lihat panduan kami tentang cara mengelak daripada disekat dengan Puppeteer Stealth .
⚙️ Pemasangan :
npm install puppeteer-extra-plugin-stealth
💡 Penggunaan :
const StealthPlugin = require("puppeteer-extra-plugin-stealth") // for ESM users: // import StealthPlugin from "puppeteer-extra-plugin-stealth" puppeteer.use(StealthPlugin())
Pemalam untuk menghalang pelayar Puppeteer daripada memuatkan sumber tertentu. Jenis sumber yang disokong termasuk document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
, other
.
Penyekatan sumber boleh dikonfigurasikan secara global dan tempatan.
⚙️ Pemasangan :
npm install puppeteer-extra-plugin-block-resources
💡 Penggunaan :
const BlockResourcesPlugin = require("puppeteer-extra-plugin-block-resources") // for ESM users: // import BlockResourcesPlugin from "puppeteer-extra-plugin-block-resources"
Anda kemudiannya boleh mengkonfigurasi sumber untuk menyekat secara global pada semua halaman:
puppeteer.use(BlockResourcesPlugin({ blockedTypes: new Set(["image", "stylesheet"]), }))
Begitu juga, anda boleh memilih sumber untuk disekat secara tempatan:
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" })
Pemalam untuk menamakan User-Agent
yang ditetapkan oleh penyemak imbas yang dikawal oleh Puppeteer. 🎭
Ia memberi anda keupayaan untuk menanggalkan rentetan 'Headless'
daripada ejen pengguna Chrome dalam mod tanpa kepala dan menyokong penggantian dinamik ejen pengguna melalui fungsi tersuai. Lihat ia dalam tindakan dalam panduan ejen pengguna Puppeteer kami.
Temui apakah ejen pengguna terbaik untuk mengikis web!
⚙️ Pemasangan :
npm install puppeteer-extra-plugin-anonymize-ua
💡 Penggunaan :
const AnonymizeUAPlugin = require("puppeteer-extra-plugin-anonymize-ua") // for ESM users: // import AnonymizeUAPlugin from "puppeteer-extra-plugin-anonymize-ua"
Seterusnya, anda boleh mengkonfigurasi ejen pengguna tanpa nama:
puppeteer.use(AnonymizeUAPlugin({ stripHeadless: true, }))
Juga, anda boleh menetapkan ejen pengguna dinamik melalui fungsi tersuai:
puppeteer.use(AnonymizeUAPlugin({ customFn: (ua) => ua.replace("Chrome", "Chromium")}) }))
Sama seperti Playwright , tidak kira betapa licin dan menyesuaikan skrip Puppeteer anda, sistem anti-bot lanjutan masih boleh menghidu anda dan menutup anda. Tetapi bagaimana mungkin? 🤔
Dokumentasi puppeteer-extra-stealth-plugin
membahagikannya untuk anda:
Sila ambil perhatian: Saya menganggap ini pertandingan persahabatan dalam permainan kucing dan tikus yang agak menarik. Jika pasukan lain (👋) ingin mengesan kromium tanpa kepala, masih ada cara untuk melakukannya (sekurang-kurangnya saya perhatikan beberapa, yang akan saya tangani dalam kemas kini akan datang).
Mungkin mustahil untuk menghalang semua cara untuk mengesan kromium tanpa kepala, tetapi perlu dilakukan untuk menjadikannya sangat sukar sehingga ia menjadi kos tinggi atau mencetuskan terlalu banyak positif palsu yang tidak dapat dilaksanakan.
Jadi, walaupun Puppeteer Extra boleh mengelak kebanyakan pengesanan bot asas seperti Neo dalam Matrix, ia pasti tidak boleh memintas Cloudflare . Sudah tentu, anda boleh menyepadukan proksi ke dalam Puppeteer , tetapi itu mungkin tidak mencukupi.
Masalahnya bukan Puppeteer itu sendiri (kerana mari kita menjadi nyata, Puppeteer rocks! 🤘), tetapi pelayar ia mengawal. Penyelesaian sebenar? Pelayar berkuasa yang:
Percaya atau tidak, ini bukan mimpi yang jauh. Ia nyata, dan ia adalah apa yang ditawarkan oleh Penyemak Imbas Scraping Data Bright!
Puppeteer ialah salah satu alat automasi penyemak imbas yang paling banyak digunakan dalam dunia teknologi, tetapi wira-wira pun mempunyai hadnya. Komuniti melangkah masuk dengan puppeteer-extra
, pakej yang memberikan Puppeteer beberapa kebolehan baharu yang sangat hebat melalui pemalam tersuai.
Tetapi inilah perkaranya: walaupun pemalam ini boleh menjadikan operasi mengikis anda lebih kuat, ia tidak akan menjadikan anda hantu secara ajaib 👻. Tapak dengan pengesanan bot lanjutan mungkin masih boleh menyekat anda!
Pintas semua anti-bot dengan Pelayar Mengikis Data Bright—pelayar awan yang tidak dapat dikesan yang berintegrasi dengan lancar dengan Puppeteer . Sertai misi kami untuk menjadikan Web sebagai ruang awam untuk semua orang, di mana-mana, walaupun melalui skrip automatik.
Sehingga kali seterusnya, teruskan meneroka Internet dengan bebas! 🌐