पप्पेटियर क्या है? Chrome और Firefox स्वचालन स्पष्ट किया गया
स्क्रेपलेस स्क्रैपिंग ब्राउज़र प्रबंधित क्लाउड ब्राउज़र सत्र प्रदान करता है जिसका उपयोग पप्पेटियर ग्राहक ब्राउज़र स्वचालन और गतिशील वेब-डेटा कार्यप्रवाह के लिए कर सकते हैं।
TL;DR
- पप्पेटियर एक जावास्क्रिप्ट ब्राउज़र-स्वचालन पुस्तकालय है। इसका उच्च-स्तरीय एपीआई नेविगेशन, इनपुट, स्क्रीनशॉट, पीडीएफ, नेटवर्क अवलोकन, और पृष्ठ मूल्यांकन के लिए Chrome और Firefox को नियंत्रित करता है।
- पप्पेटियर एक से अधिक ब्राउज़र प्रोटोकॉल का उपयोग करता है। Chrome सामान्यतः Chrome DevTools प्रोटोकॉल का उपयोग करता है, जबकि Firefox स्वचालन वर्तमान पप्पेटियर दस्तावेज़ में डिफ़ॉल्ट रूप से WebDriver BiDi का उपयोग करता है।
- पैकेज एक ब्राउज़र को प्रबंधित या कनेक्ट कर सकता है। एक कार्यप्रवाह एक संगत स्थानीय ब्राउज़र लॉन्च कर सकता है, एक ब्राउज़र को अलग से स्थापित कर सकता है, या एक समर्थित दूरस्थ एंडपॉइंट से कनेक्ट कर सकता है।
- पप्पेटियर पूरी तरह से केंद्रित है न कि ऑल-इन-वन। यह ब्राउज़र नियंत्रण प्रदान करता है लेकिन परीक्षण खोज, आश्वासन, सुविधाएँ, और रिपोर्टिंग को अन्य पुस्तकालयों या अनुप्रयोग कोड पर छोड़ देता है।
- एक ब्राउज़र उपयोगी डेटा की गारंटी नहीं देता है। स्क्रिप्टों को अभी भी स्टेट-अवेयर वेट्स, स्थिर चयनकर्ता, आउटपुट सत्यापन, बाउंड ट्रैफ़िक, और लक्षित करने के लिए स्पष्ट अनुमति की आवश्यकता होती है।
पप्पेटियर जावास्क्रिप्ट को एक ब्राउज़र का सीधा नियंत्रण देता है।
पप्पेटियर एक ओपन-सोर्स जावास्क्रिप्ट पुस्तकालय है जो एक उच्च-स्तरीय एपीआई के माध्यम से समर्थित ब्राउज़रों को नियंत्रित करता है। यह ब्राउज़र, संदर्भ, पृष्ठ, फ़्रेम, इनपुट, नेटवर्क, ट्रेसिंग, स्क्रीनशॉट, पीडीएफ, और मूल्यांकन संचालन को उजागर करता है। एक स्क्रिप्ट एक ब्राउज़र लॉन्च कर सकती है जिसे पप्पेटियर प्रबंधित करता है या एक मौजूदा संगत ब्राउज़र प्रक्रिया से कनेक्ट कर सकती है। क्योंकि एपीआई जावास्क्रिप्ट-प्रथम है और ब्राउज़र अवधारणाओं के करीब है, यह Node.js सेवाओं, कमांड-लाइन उपकरणों, क्रॉलर्स, दृश्य कैप्चर सिस्टम, और अनुकूलित परीक्षण हार्नेस के लिए उपयुक्त है।
आधिकारिक पप्पेटियर परिचय पप्पेटियर को Chrome और Firefox स्वचालन के लिए एक जावास्क्रिप्ट पुस्तकालय के रूप में प्रस्तुत करता है। पुराने विवरण अक्सर पप्पेटियर को हेडलेस क्रोमियम तक सीमित कर देते हैं, लेकिन अब यह अधूरा है। हेडलेस Chrome एक केंद्रीय उपयोग मामला बना हुआ है, फिर भी वर्तमान ब्राउज़र समर्थन और प्रोटोकॉल कार्य में Firefox शामिल है। टीमों को ब्राउज़रों को चुनने या माइग्रेशन डिज़ाइन करते समय ऐतिहासिक परिभाषा को दोहराने के बजाय वर्तमान संगतता तालिका का उपयोग करना चाहिए।
ब्राउज़र, संदर्भ, पृष्ठ, और प्रोटोकॉल एक साथ काम करते हैं।
ब्राउज़र ऑब्जेक्ट प्रक्रिया या दूरस्थ कनेक्शन का स्वामी होता है। ब्राउज़र संदर्भ स्वतंत्र सत्रों के लिए कुकीज़ और भंडारण को अलग करता है। पृष्ठ एक टैब का प्रतिनिधित्व करता है और नेविगेशन, DOM क्वेरी, लोकेटर्स, घटनाओं, स्क्रीनशॉट और स्क्रिप्ट निष्पादन प्रदान करता है। उच्च-स्तरीय एपीआई के तहत, एक प्रोटोकॉल आदेशों और घटनाओं को परिवहन करता है। Chrome स्वचालन सामान्यतः CDP का उपयोग करता है, जबकि WebDriver BiDi पप्पेटियर के लिए Firefox के लिए उपयोग किया जाने वाला एक क्रॉस-ब्राउज़र इवेंट-चालित पथ प्रदान करता है और इसे समर्थित सुविधाओं के लिए Chrome के साथ उपयोग कर सकता है।
आधिकारिक पप्पेटियर WebDriver BiDi गाइड पप्पेटियर के WebDriver BiDi समर्थन को समझाता है और नोट करता है कि असमर्थित संचालन एक UnsupportedOperation त्रुटि उत्पन्न कर सकते हैं। वह सीमा प्रोटोकॉल चयन में महत्वपूर्ण है: CDP एक गहरे Chrome-विशिष्ट सतह को उजागर करता है, जबकि BiDi का लक्ष्य मानकीकृत क्रॉस-ब्राउज़र नियंत्रण करना है लेकिन अभी भी विकासशील है। परियोजना द्वारा आवश्यक प्रोटोकॉल और ब्राउज़र पर सटीक विशेषताओं का परीक्षण करें—नेटवर्क इंटरसेप्शन, डाउनलोड, अनुकरण, ट्रेसिंग, एक्सटेंशन, या ब्राउज़र प्रबंधन।
- ब्राउज़र। एक ब्राउज़र प्रक्रिया को लॉन्च या कनेक्ट करता है और समग्र जीवनचक्र का प्रबंधन करता है।
- ब्राउज़र संदर्भ। ब्राउज़र के अंदर एक अलग कुकी, कैश, और भंडारण सीमा बनाता है।
- पृष्ठ। एक टैब का प्रतिनिधित्व करता है और नेविगेशन, इनपुट, मूल्यांकन, नेटवर्क, और कैप्चर संचालन को उजागर करता है।
- CDP सत्र। जब उच्च-स्तरीय एपीआई पर्याप्त नहीं होता है, तो Chrome DevTools प्रोटोकॉल डोमेन तक निम्न-स्तरीय पहुँच प्रदान करता है।
- WebDriver BiDi कनेक्शन। समर्थित क्रॉस-ब्राउज़र संचालन के लिए एक इवेंट-चालित मानक पथ प्रदान करता है।
पप्पेटियर लॉन्च, स्थापित कर सकता है, या कनेक्ट कर सकता है।
पूरी पप्पेटियर पैकेज सामान्यतः एक संगत ब्राउज़र डाउनलोड का प्रबंधन करता है, जिससे स्थानीय परियोजना को शुरू करना आसान होता है लेकिन स्थापना के आकार को बढ़ाता है। पप्पेटियर कोर उस प्रबंधित ब्राउज़र को छोड़ देता है और तब उपयोगी होता है जब ब्राउज़र निष्पादन योग्य या दूरस्थ सेवा अलग से प्रदान की जाती है। दूरस्थ कनेक्शन Node.js नियंत्रण प्रक्रिया को स्थानीय रखते हुए ब्राउज़र निष्पादन को दूसरे मेज़बान पर होता है। प्रत्येक दृष्टिकोण यह बदलता है कि ब्राउज़र संस्करणों, निष्पादन योग्य पथ, सैंडबॉक्स सेटिंग्स, ऑपरेटिंग-सिस्टम निर्भरताएँ, और सफाई का स्वामित्व किसका है।
आधिकारिक पप्पेटियर समर्थित-ब्राउज़र तालिका पप्पेटियर रिलीज़ और समर्थित Chrome और Firefox संस्करणों के बीच का मैपिंग प्रकाशित करता है। वह मैपिंग संचालनात्मक है, न कि ज्ञानवर्धक। पैकेज को पिन करना जबकि चुपचाप ब्राउज़र को बदलना असमर्थित संयोजन उत्पन्न कर सकता है, और पैकेज को अपग्रेड करना डाउनलोड किए गए ब्राउज़र को बदल सकता है। कंटेनरों और CI चित्रों को दोनों पक्षों को रिकॉर्ड करना चाहिए। एक दूरस्थ सेवा को उत्पादन में देखे गए व्यवहार को पुन: उत्पन्न करने के लिए पर्यावरण की जानकारी पर्याप्त रूप से उजागर करनी चाहिए।
पप्पेटियर विकल्प स्वामित्व और पोर्टेबलिटी को प्रभावित करते हैं।
उसी पृष्ठ एपीआई विभिन्न स्थापना और प्रोटोकॉल मॉडलों के ऊपर बैठ सकता है, लेकिन उन मॉडलों में समान रखरखाव या फीचर सीमाएँ नहीं होती हैं।
| चुनाव | संचालनात्मक प्रभाव |
|---|---|
| पप्पेटियर पैकेज | ब्राउज़र-प्रबंधन व्यवहार को शामिल करता है और तब सुविधाजनक होता है जब परियोजना चाहती हो कि पप्पेटियर एक संगत स्थानीय ब्राउज़र का मालिक हो। |
| पप्पेटियर कोर | परियोजना या दूरस्थ प्रदाता को ब्राउज़र स्थापना और जीवनचक्र छोड़ देता है, पुस्तकालय पैकेजिंग में धारणाएँ कम करता है। |
| स्थानीय लॉन्च | अनुप्रयोग ऑपरेटिंग-सिस्टम निर्भरता, ब्राउज़र प्रक्रियाएँ, सैंडबॉक्स कॉन्फ़िगरेशन, संसाधन, और सफाई का मालिक होता है। |
| दूरस्थ कनेक्ट | एक सेवा ब्राउज़र होस्टिंग का मालिक होता है जबकि अनुप्रयोग पप्पेटियर लॉजिक को बनाए रखता है और दूरस्थ फीचर समर्थन की पुष्टि करनी चाहिए। |
| सीडीपी | गहरे Chrome-विशिष्ट निरीक्षण और नियंत्रण की पेशकश करता है और Puppeteer में Chrome के लिए डिफ़ॉल्ट पथ है। |
| वेबड्राइवर BiDi | समर्थित विशेषताओं के लिए क्रॉस-ब्राउज़र आदेश और घटनाओं की पेशकश करता है और Puppeteer में फ़ायरफ़ॉक्स के लिए डिफ़ॉल्ट पथ है। |
Puppeteer उपयोग मामलों के लिए जो एक केंद्रित API से लाभान्वित होते हैं
Puppeteer उन परियोजनाओं के लिए उपयुक्त है जो एक जावास्क्रिप्ट एप्लिकेशन के भीतर ब्राउज़र प्राइमिटिव्स चाहती हैं बिना किसी निर्धारित परीक्षण आर्किटेक्चर को अपनाए।
गतिशील पृष्ठ निष्कर्षण
Puppeteer क्लाइंट अनुप्रयोगों को रेंडर कर सकता है, अनुमति प्राप्त इंटरैक्शन कर सकता है, और DOM या देखे गए प्रतिक्रियाओं से संरचित सार्वजनिक जानकारी निकाल सकता है।
स्क्रीनशॉट और पीडीएफ सेवाएँ
एक Node.js सेवा नियंत्रित पृष्ठों को लोड कर सकती है, व्यू पोर्ट और मीडिया सेटिंग्स लागू कर सकती है, और दृश्य या प्रिंट करने योग्य कलाकृतियाँ उत्पन्न कर सकती है।
कस्टम परीक्षण हार्नेस
एक मौजूदा जावास्क्रिप्ट रनर वाली टीमें अपने Fixtures, assertions, रिपोर्टिंग और अनुसूची को बनाए रखते हुए ब्राउज़र नियंत्रण जोड़ सकती हैं।
ब्राउज़र निदान
सीडीपी एक्सेस, ट्रेसिंग, कंसोल घटनाएँ, प्रदर्शन डेटा, और नेटवर्क निरीक्षण डिबगिंग और सिंथेटिक मॉनिटरिंग का समर्थन कर सकते हैं।
Puppeteer परीक्षण आर्किटेक्चर और क्षमता को परियोजना पर छोड़ देता है
Puppeteer एक रनर, assertion लाइब्रेरी, fixture मॉडल, या रिपोर्ट प्रारूप को निर्दिष्ट नहीं करता है। यह किसी एप्लिकेशन में ऑटोमेशन को एम्बेड करने के लिए उपयोगी है, लेकिन एक परीक्षण टीम को उन परतों को इकट्ठा और बनाए रखना पड़ता है। ब्राउज़र प्रक्रियाएँ भी सामग्री संसाधनों का उपभोग करती हैं, और एक Node.js प्रक्रिया बहुत से पृष्ठ बना सकती है इससे पहले कि कोड जटिल दिखाई दे। ब्राउज़र और संदर्भ पूलिंग को सावधानीपूर्वक परिभाषित करें, संसाधनों को निश्चित रूप से बंद करें, और खातों या बाजारों को अलग करें जो स्टोरेज साझा नहीं करना चाहिए।
Chrome DevTools प्रोटोकॉल दस्तावेज़ीकरण Chrome DevTools प्रोटोकॉल को दस्तावेज़ित करता है जो Chrome को इंस्ट्रमेंट, निरीक्षण, डिबग और प्रोफ़ाइल करने के लिए उपयोग किया जाता है। CDP की गहराई मूल्यवान है, लेकिन Chrome-विशिष्ट आदेश पोर्टेबिलिटी को कम करते हैं। निम्न-स्तरीय प्रोटोकॉल कॉल को एक छोटे एडेप्टर के पीछे रखें, यह दस्तावेज़ करें कि उनकी आवश्यकता क्यों है, और जब वही कार्यप्रवाह WebDriver BiDi या किसी अन्य ब्राउज़र के माध्यम से चलता है तो स्पष्ट व्यवहार प्रदान करें।
एक Puppeteer परियोजना तैयारी की चेकलिस्ट
महत्वपूर्ण निर्णय ब्राउज़र स्वामित्व, प्रोटोकॉल, संदर्भ दायरा, साक्ष्य, और वे ढांचे की परतें हैं जो Puppeteer जानबूझकर खुली रखता है।
- आवश्यकताओं से ब्राउज़र चुनें। यह पुष्टि करें कि क्या केवल Chrome पर्याप्त है या Firefox का व्यवहार मायने रखता है। वर्तमान समर्थित-ब्राउज़र तालिका का उपयोग करें और मैट्रिक्स पर प्रतिबद्ध करने से पहले सही संयोजनों का परीक्षण करें।
- पैकेज स्वामित्व चुनें। पूर्ण पैकेज का उपयोग करें जब Puppeteer को एक संगत ब्राउज़र का प्रबंधन करना चाहिए, या Puppeteer Core का उपयोग करें जब कंटेनर, सिस्टम पैकेज, या एक दूरस्थ सेवा ब्राउज़र का स्वामित्व रखते हैं।
- प्रोटोकॉल निर्भरताओं की पहचान करें। हर सीधे CDP कॉल और WebDriver BiDi पर अपेक्षित प्रत्येक विशेषता को सूचीबद्ध करें। ब्राउज़र-विशिष्ट व्यवहार को सामान्य सहायक सामग्री के भीतर छिपाने के बजाय दृश्य रखें।
- जानबूझकर दायरे का स्कोप करें। स्वतंत्र कुकीज़ और भंडारण के लिए पृथक संदर्भों का उपयोग करें। साझा संदर्भ केवल तब उपयुक्त है जब कार्यप्रवाह एक पहचान या राज्य को जारी रखने का इरादा रखता हो।
- अर्थपूर्ण परिस्थितियों के लिए प्रतीक्षा करें। प्रगति को चयनकर्ताओं, प्रतिक्रियाओं, यूआरएल परिवर्तनों, फ़ंक्शन परिणामों, या अन्य अवलोकनीय स्थिति से बांधें। निश्चित विलंबों को मुख्य समन्वय भार नहीं उठाना चाहिए।
- परीक्षण स्टैक को इकट्ठा करें। यदि परियोजना एक परीक्षण सूट है, तो Puppeteer के चारों ओर चलने वाले रनर, assertion लाइब्रेरी, fixtures, रिपोर्ट, और कलाकृति नीति का नाम दें।
- ब्राउज़र क्षमता को मापें। काम करने वालों को बढ़ाने से पहले प्रक्रिया मेमोरी, सक्रिय पृष्ठों, प्रारंभिक लागत, सत्र अवधि, नेटवर्क मात्रा, और लक्ष्य होस्ट सह-सेवानिवृत्तता की ट्रैकिंग करें।
- आउटपुट सामग्री को मान्य करें। अंतिम यूआरएल, अपेक्षित फ़ील्ड, पृष्ठ भाषा, रिकॉर्ड गणना, और पृष्ठ प्रकार की जाँच करें। एक सफल नेविगेशन अभी भी सहमति स्क्रीन या अधूरी एप्लिकेशन शैल पर उतर सकता है।
Puppeteer का उपयोग Scrapeless Scraping Browser के साथ करना
Scrapeless Scraping Browser एक ब्राउज़र सत्र की मेज़बानी कर सकता है जिसे Puppeteer क्लाइंट एक समर्थित दूरस्थ अंत बिंदु के माध्यम से कनेक्ट करता है। अनुप्रयोग Familiar Puppeteer पृष्ठ संचालन को बनाए रखता है जबकि Scrapeless क्लाउड ब्राउज़र प्रक्रिया, सत्र सेटिंग्स, और कॉन्फ़िगर की गई नेटवर्क पथ का स्वामित्व रखता है।
उत्पादन कार्यप्रवाह को स्थानांतरित करने से पहले वर्तमान अंत बिंदु, समर्थित ग्राहक पैकेज, सत्र नियंत्रण, और दूरस्थ सुविधा सतह की पुष्टि करें। वर्तमान की समीक्षा करें Scrapeless Scraping Browser उत्पाद अवलोकन, Scrapeless Scraping Browser शुरू करने के लिए दस्तावेज़, और Scrapeless मूल्य निर्धारण एक संचालन मॉडल चुनने से पहले।
निष्कर्ष: Puppeteer एक केंद्रित ब्राउज़र-नियंत्रण पुस्तकालय है।
Puppeteer जावास्क्रिप्ट अनुप्रयोगों को क्रोम और फ़ायरफॉक्स को नियंत्रित करने के लिए एक सीधा, उच्च-स्तरीय तरीका देता है। यह संगत ब्राउज़र लॉन्च कर सकता है, दूरस्थ सत्रों से कनेक्ट कर सकता है, CDP के माध्यम से काम कर सकता है, और समर्थित क्रॉस-ब्राउज़र ऑपरेशनों के लिए WebDriver BiDi का उपयोग कर सकता है। केंद्रित API इसे ब्राउज़र व्यवहार को कस्टम सिस्टम में समाहित करना आसान बनाता है।
वह ध्यान भी परियोजना के लिए महत्वपूर्ण निर्णय छोड़ता है। ब्राउज़र संस्करणों पर नियंत्रण करें, प्रोटोकॉल मान्यताओं को स्पष्ट करें, संदर्भ स्थिति को अलग करें, स्थिति-आधारित प्रतीक्षा चुनें, लौटाए गए पृष्ठ को मान्य करें, और परीक्षण करते समय एक परीक्षण स्टैक को इकट्ठा करें।
क्या आप क्लाउड में Puppeteer चलाने के लिए तैयार हैं?
एक Scrapeless खाता बनाएं और बड़े ऑटोमेशन सेवा में स्थानांतरित करने से पहले एक प्रबंधित ब्राउज़र सत्र के खिलाफ एक सीमित Puppeteer वर्कफ़्लो का परीक्षण करें।
मुफ्त शुरू करें →यहां सामान्य प्रश्न हैं
क्या Puppeteer फ़ायरफ़ॉक्स का समर्थन करता है?
हाँ। वर्तमान Puppeteer दस्तावेज़ क्रोम और फ़ायरफ़ॉक्स समर्थन की सूची बनाता है। फ़ायरफ़ॉक्स डिफ़ॉल्ट रूप से WebDriver BiDi का उपयोग करता है, जबकि क्रोम सामान्य रूप से CDP का उपयोग करता है। फ़ीचर कवरेज ब्राउज़र और प्रोटोकॉल के अनुसार भिन्न हो सकता है, इसलिए समान व्यवहार मानने के बजाय प्रत्येक आवश्यक ऑपरेशन का परीक्षण करें।
क्या Puppeteer केवल हेडलेस Chrome के लिए है?
नहीं। Puppeteer हेडलेस या हेडेड मोड में समर्थित ब्राउज़रों को चला सकता है और अब क्रोम और फ़ायरफ़ॉक्स को कवर करता है। ऐतिहासिक “हेडलैस क्रोम लाइब्रेरी” विवरण वर्तमान ब्राउज़र और WebDriver BiDi समर्थन को भूल जाता है।
Puppeteer और Puppeteer कोर के बीच क्या अंतर है?
पूर्ण Puppeteer पैकेज में ब्राउज़र-प्रबंधन व्यवहार शामिल होता है और सामान्य रूप से एक संगत प्रबंधित ब्राउज़र के साथ काम करता है। Puppeteer कोर वह पुस्तकालय है जिसमें वह ब्राउज़र स्वामित्व नहीं होता और ऐसे प्रोजेक्ट के लिए उपयुक्त है जो एक निष्पादन योग्य, कंटेनर इमेज, या दूरस्थ ब्राउज़र सेवा अलग से प्रदान करते हैं।
क्या Puppeteer का उपयोग वेब स्क्रैपिंग के लिए किया जा सकता है?
हाँ। Puppeteer जावास्क्रिप्ट पृष्ठों को रेंडर कर सकता है, अनुमत सार्वजनिक नियंत्रणों के साथ बातचीत कर सकता है, DOM का निरीक्षण कर सकता है, और प्रतिक्रियाओं का अवलोकन कर सकता है। इसका उपयोग केवल तब करें जब ब्राउज़र निष्पादन उपलब्ध डेटा को बदलता है; प्रारंभिक प्रतिक्रिया पर्याप्त होने पर डायरेक्ट HTTP संग्रह सरल होता है।
क्या Puppeteer में एक परीक्षण चलाने वाला है?
एक सिंगल रनर की आवश्यकता नहीं होती है या इसे पूरी परीक्षण आर्किटेक्चर के रूप में बंडल नहीं किया जाता है। टीमें आमतौर पर Puppeteer को एक जावास्क्रिप्ट टेस्ट रनर, आश्वासन पुस्तकालय, फिक्स्चर, और रिपोर्टिंग टूल के साथ जोड़ती हैं, या इसे एक कस्टम एप्लिकेशन में समाहित करती हैं जो शेड्यूलिंग और परिणाम हैंडलिंग का स्वामित्व रखती है।