Σε αυτόν τον οδηγό, θα σας παρουσιάσουμε το puppeteer-extra
—μια βιβλιοθήκη που αναδιπλώνει puppeteer
για να το επεκτείνει με υποστήριξη plugin. Ετοιμαστείτε να μεταφέρετε το έργο απόξεσης του Puppeteer στο επόμενο επίπεδο! 🚀
είναι ένα ελαφρύ περιτύλιγμα γύρω από puppeteer
που επιτρέπει την ενσωμάτωση προσθηκών μέσω μιας καθαρής διεπαφής. Αν και δεν έχει αναπτυχθεί από την ομάδα πίσω από , αυτό το έργο που βασίζεται στην κοινότητα έχει εκατοντάδες χιλιάδες εβδομαδιαίες λήψεις και πάνω από 6 χιλιάδες αστέρια στο GitHub 📈.
Ρίξτε μια ματιά στον — είναι σαφές ότι το puppeteer-extra
αποθετήριο έχει μια σταθερή άνοδο σε δημοτικότητα όλα αυτά τα χρόνια:
User-Agent
σε όλες τις σελίδες, με υποστήριξη για δυναμική αντικατάσταση.Χωρίς αμφιβολία, το Puppeteer είναι μια από τις κορυφαίες . Αλλά ας είμαστε ειλικρινείς—έχει τα όριά του, ειδικά όταν αντιμετωπίζετε τεχνολογία anti-bot, όπως δακτυλικά αποτυπώματα προγράμματος περιήγησης και CAPTCHA. Διαβάστε τον οδηγό μας για να μάθετε πώς να αντιμετωπίζετε τον αυτοματισμό reCAPTCHA .
Το Puppeteer Extra είναι σαν ένα power-up για το Puppeteer, προσθέτοντας υποστήριξη plugin για την αντιμετώπιση αυτών των σημαντικών μειονεκτημάτων. Αντί να παρακάμπτει ή να επεκτείνει τα πάντα για εσάς, αναδιπλώνει το Puppeteer και σας επιτρέπει να καταχωρείτε μόνο τα πρόσθετα που χρειάζεστε. 🦸
puppeteer-extra
: Ρύθμιση και πρόσθετα για την απόξεση ιστού 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()
για να συνδέσετε τα plugins Puppeteer Extra.
⚙️ Εγκατάσταση :
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("//www.example.com/", { waitUntil: "domcontentloaded" })
Ένα πρόσθετο για την ανωνυμοποίηση του User-Agent
που έχει οριστεί από το πρόγραμμα περιήγησης που ελέγχεται από το Puppeteer. 🎭
Σας δίνει τη δυνατότητα να αφαιρέσετε τη συμβολοσειρά 'Headless'
από τον παράγοντα χρήστη Chrome σε λειτουργία χωρίς κεφαλή και υποστηρίζει τη δυναμική αντικατάσταση του παράγοντα χρήστη μέσω μιας προσαρμοσμένης λειτουργίας. Δείτε το σε δράση στον .
⚙️ Εγκατάσταση :
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, τα προηγμένα συστήματα anti-bot μπορούν ακόμα να σας μυρίσουν και να σας κλείσουν. Πώς είναι όμως αυτό δυνατό; 🤔
του puppeteer-extra-stealth-plugin
το αναλύει για εσάς:
Σημείωση: Θεωρώ ότι αυτό είναι ένας φιλικός διαγωνισμός σε ένα αρκετά ενδιαφέρον παιχνίδι γάτας και ποντικιού. Εάν η άλλη ομάδα (👋) θέλει να ανιχνεύσει ακέφαλο χρώμιο, υπάρχουν ακόμα τρόποι για να το κάνει αυτό (τουλάχιστον παρατήρησα μερικούς, τους οποίους θα αντιμετωπίσω σε μελλοντικές ενημερώσεις).Είναι πιθανώς αδύνατο να αποφευχθούν όλοι οι τρόποι ανίχνευσης του ακέφαλου χρωμίου, αλλά θα πρέπει να είναι δυνατό να γίνει τόσο δύσκολο ώστε να γίνει απαγορευτικό από πλευράς κόστους ή να ενεργοποιήσει πάρα πολλά ψευδώς θετικά για να είναι εφικτά.
Έτσι, ενώ το Puppeteer Extra μπορεί να αποφύγει τον πιο βασικό εντοπισμό ρομπότ όπως το Neo στο Matrix, σίγουρα δεν μπορεί να παρακάμψει το Cloudflare . Σίγουρα, θα μπορούσατε να , αλλά ακόμη και αυτό μπορεί να μην είναι αρκετό.
Το Puppeteer είναι ένα από τα πιο ευρέως χρησιμοποιούμενα εργαλεία αυτοματισμού του προγράμματος περιήγησης στον κόσμο της τεχνολογίας, αλλά ακόμη και οι υπερήρωες έχουν τα όριά τους. Η κοινότητα παρενέβη με puppeteer-extra
, ένα πακέτο που δίνει στο Puppeteer μερικές πολύ εντυπωσιακές νέες ικανότητες μέσω προσαρμοσμένων προσθηκών.