Όπως τονίζεται στον οδηγό μας για την απόξεση ιστού με το Puppeteer , αυτή η βιβλιοθήκη αυτοματισμού προγράμματος περιήγησης είναι ένας φανταστικός σύμμαχος για την εξαγωγή δεδομένων από ιστότοπους δυναμικού περιεχομένου. Ωστόσο, όπως κάθε άλλο εργαλείο, έχει τα μειονεκτήματά του. Εκεί μπαίνει το Puppeteer Extra!
Σε αυτόν τον οδηγό, θα σας παρουσιάσουμε το puppeteer-extra
—μια βιβλιοθήκη που αναδιπλώνει puppeteer
για να το επεκτείνει με υποστήριξη plugin. Ετοιμαστείτε να μεταφέρετε το έργο απόξεσης του Puppeteer στο επόμενο επίπεδο! 🚀
Το Puppeteer Extra είναι ένα ελαφρύ περιτύλιγμα γύρω από puppeteer
που επιτρέπει την ενσωμάτωση προσθηκών μέσω μιας καθαρής διεπαφής. Αν και δεν έχει αναπτυχθεί από την ομάδα πίσω από το Puppeteer , αυτό το έργο που βασίζεται στην κοινότητα έχει εκατοντάδες χιλιάδες εβδομαδιαίες λήψεις και πάνω από 6 χιλιάδες αστέρια στο GitHub 📈.
Ρίξτε μια ματιά στον παρακάτω πίνακα με τα αστέρια του GitHub — είναι σαφές ότι το puppeteer-extra
αποθετήριο έχει μια σταθερή άνοδο σε δημοτικότητα όλα αυτά τα χρόνια:
Τα πρόσθετα που υποστηρίζονται επίσημα από το Puppeteer Extra είναι:
User-Agent
σε όλες τις σελίδες, με υποστήριξη για δυναμική αντικατάσταση.Εκτός από αυτά, ενσωματώνεται με τις ακόλουθες προσθήκες κοινότητας:
Χωρίς αμφιβολία, το Puppeteer είναι μια από τις κορυφαίες βιβλιοθήκες προγράμματος περιήγησης χωρίς κεφαλές για απόξεση και δοκιμή . Αλλά ας είμαστε ειλικρινείς—έχει τα όριά του, ειδικά όταν αντιμετωπίζετε τεχνολογία anti-bot, όπως δακτυλικά αποτυπώματα προγράμματος περιήγησης και CAPTCHA. Διαβάστε τον οδηγό μας για να μάθετε πώς να αντιμετωπίζετε τον αυτοματισμό reCAPTCHA .
Ιστότοποι που είναι οπλισμένοι με άμυνες anti-bot μπορούν εύκολα να εντοπίσουν και να αποκλείσουν τα σενάρια Puppeteer. Αν υπήρχε τρόπος να επεκταθεί και να προσαρμοστεί η προεπιλεγμένη συμπεριφορά του Puppeteer...
…καλά, αυτό ακριβώς είναι το Puppeteer Extra!
Το Puppeteer Extra είναι σαν ένα power-up για το Puppeteer, προσθέτοντας υποστήριξη plugin για την αντιμετώπιση αυτών των σημαντικών μειονεκτημάτων. Αντί να παρακάμπτει ή να επεκτείνει τα πάντα για εσάς, αναδιπλώνει το 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()
για να συνδέσετε τα plugins Puppeteer Extra.
Ήρθε η ώρα να βουτήξετε στο τι μπορούν να κάνουν αυτά τα πρόσθετα και να δείτε πώς θα ανεβάσουν επίπεδο το παιχνίδι σας απόξεσης ιστού!
Το Puppeteer Extra Plugin Stealth , γνωστό και απλά ως Puppeteer Stealth, περιλαμβάνει ένα σύνολο διαμορφώσεων που έχουν σχεδιαστεί για να μειώνουν την ανίχνευση bot. Παρακάμπτει τις ανιχνεύσιμες ιδιότητες και ρυθμίσεις του Puppeteer που μπορεί να το εκθέσουν ως bot.
Για περισσότερες λεπτομέρειες, ανατρέξτε στον οδηγό μας για το πώς να αποφύγετε τον αποκλεισμό με το 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, τα προηγμένα συστήματα anti-bot μπορούν ακόμα να σας μυρίσουν και να σας κλείσουν. Πώς είναι όμως αυτό δυνατό; 🤔
Η τεκμηρίωση του puppeteer-extra-stealth-plugin
το αναλύει για εσάς:
Σημείωση: Θεωρώ ότι αυτό είναι ένας φιλικός διαγωνισμός σε ένα αρκετά ενδιαφέρον παιχνίδι γάτας και ποντικιού. Εάν η άλλη ομάδα (👋) θέλει να ανιχνεύσει ακέφαλο χρώμιο, υπάρχουν ακόμα τρόποι για να το κάνει αυτό (τουλάχιστον παρατήρησα μερικούς, τους οποίους θα αντιμετωπίσω σε μελλοντικές ενημερώσεις).
Είναι πιθανώς αδύνατο να αποφευχθούν όλοι οι τρόποι ανίχνευσης του ακέφαλου χρωμίου, αλλά θα πρέπει να είναι δυνατό να γίνει τόσο δύσκολο ώστε να γίνει απαγορευτικό από πλευράς κόστους ή να ενεργοποιήσει πάρα πολλά ψευδώς θετικά για να είναι εφικτά.
Έτσι, ενώ το Puppeteer Extra μπορεί να αποφύγει τον πιο βασικό εντοπισμό ρομπότ όπως το Neo στο Matrix, σίγουρα δεν μπορεί να παρακάμψει το Cloudflare . Σίγουρα, θα μπορούσατε να ενσωματώσετε έναν διακομιστή μεσολάβησης στο Puppeteer , αλλά ακόμη και αυτό μπορεί να μην είναι αρκετό.
Το πρόβλημα δεν είναι το ίδιο το Puppeteer (γιατί ας είμαστε αληθινοί, Puppeteer rocks! 🤘), αλλά το πρόγραμμα περιήγησης που ελέγχει. Η πραγματική λύση; Ένα ισχυρό πρόγραμμα περιήγησης που:
Είτε το πιστεύετε είτε όχι, αυτό δεν είναι κάποιο μακρινό όνειρο. Είναι αληθινό και αυτό ακριβώς έχει να προσφέρει το Bright Data's Scraping Browser !
Το Puppeteer είναι ένα από τα πιο ευρέως χρησιμοποιούμενα εργαλεία αυτοματισμού του προγράμματος περιήγησης στον κόσμο της τεχνολογίας, αλλά ακόμη και οι υπερήρωες έχουν τα όριά τους. Η κοινότητα παρενέβη με puppeteer-extra
, ένα πακέτο που δίνει στο Puppeteer μερικές πολύ εντυπωσιακές νέες ικανότητες μέσω προσαρμοσμένων προσθηκών.
Αλλά εδώ είναι το πράγμα: ενώ αυτά τα πρόσθετα μπορούν να κάνουν τη λειτουργία απόξεσης πολύ πιο δυνατή, δεν θα σας μετατρέψουν ως δια μαγείας σε φάντασμα 👻. Οι ιστότοποι με προηγμένη ανίχνευση ρομπότ ενδέχεται να εξακολουθούν να μπορούν να σας αποκλείσουν!
Παρακάμψτε όλα τα anti-bots με το Bright Data's Scraping Browser—ένα μη ανιχνεύσιμο πρόγραμμα περιήγησης cloud που ενσωματώνεται άψογα με το Puppeteer . Λάβετε μέρος στην αποστολή μας να κάνουμε τον Ιστό δημόσιο χώρο για όλους, παντού, ακόμη και μέσω αυτοματοποιημένων σεναρίων.
Μέχρι την επόμενη φορά, συνεχίστε να εξερευνάτε το Διαδίκτυο με ελευθερία! 🌐