क्रोम डेवटुल्स प्रोटोकॉल (सीडीपी) क्या है?
Senior Web Scraping Engineer
TL;DR:
- क्रोम डेवलपर टूल्स प्रोटोकॉल (सीडीपी) वह वायर प्रोटोकॉल है जो बाहरी उपकरणों को क्रोमियम-आधारित ब्राउज़र को इंस्ट्रूमेंट, निरीक्षण, डिबग और प्रोफाइल करने देता है। क्रोम डेवलपर टूल्स खुद ब्राउज़र से सीडीपी के माध्यम से बात करता है, और ऐसा ही पप्पेटियर, प्लेयराइट और क्रोमेडीपी करते हैं।
- सीडीपी को डोमेन में व्यवस्थित किया गया है। प्रत्येक डोमेन -
पृष्ठ,नेटवर्क,डीओएम,रनटाइम,टारगेट,ब्राउज़र,इनपुट, और 60 से अधिक अन्य - वह कमांड परिभाषित करता है जिसे यह स्वीकार करता है और घटनाएँ जो यह उत्सर्जित करता है। - परिवहन JSON संदेशों के माध्यम से एक वेब-सॉकेट है। एक क्लाइंट एक JSON ऑब्जेक्ट के रूप में एक कमांड भेजता है जिसमें एक
id, एकmethodऔरparamsहोते हैं; ब्राउज़र एक मेल खाते परिणाम के साथ जवाब देता है और जब वे होते हैं तब घटनाएँ स्ट्रीम करता है। - यह दो ट्रैकों में आता है। टिप-ऑफ-ट्री (
टोट) संस्करण अक्सर बदलता है जिसमें कोई संगतता की गारंटी नहीं होती है; स्थिर1.3संस्करण (क्रोम 64 से) एक समर्थित उपवर्ग है। - सीडीपी यह है कि आधुनिक स्वचालन कैसे एक ब्राउज़र से जुड़ता है - जिसमें दूरस्थ भी शामिल हैं। एक सीडीपी क्लाइंट को एक वेब-सॉकेट एंडपॉइंट पर इंगित करें और यह उस ब्राउज़र को चलाता है, चाहे वह कहीं भी चले।
- स्क्रेपलेस स्क्रैपिंग ब्राउज़र एक सीडीपी एंडपॉइंट है। पप्पेटियर, प्लेयराइट या क्रोमेडीपी एक वेब-सॉकेट यूआरएल से जुड़ते हैं और असली क्लाउड क्रोमियम के खिलाफ चलते हैं, अपरिवर्तित।
- शुरू करने के लिए स्वतंत्र। नए स्क्रेपलेस खाते मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम शामिल करते हैं - app.scrapeless.com पर साइन अप करें।
परिचय: वह भाषा जो ऑटोमेशन क्रोम से बात करती है
क्रोम डेवलपर टूल्स प्रोटोकॉल वह इंटरफ़ेस है जो एक ब्राउज़र बाहरी उपकरणों को नियंत्रित और अवलोकन करने के लिए प्रदान करता है। जब आप क्रोम के डेवलपर टूल्स पैनल को खोलते हैं और नेटवर्क अनुरोधों को देखते हैं या जावास्क्रिप्ट के चरणों के माध्यम से जाते हैं, तो पैनल सीधे ब्राउज़र में प्रवेश नहीं कर रहा है - यह सीडीपी कमांड भेज रहा है और एक कनेक्शन के माध्यम से सीडीपी घटनाएँ प्राप्त कर रहा है। क्रोमियम पर आधारित हर ब्राउज़र-स्वचालन पुस्तकालय उसी प्रोटोकॉल का उपयोग करता है।
यह स्क्रैपिंग और परीक्षण के लिए महत्वपूर्ण है क्योंकि सीडीपी वह है जो एक स्क्रिप्ट को वह करने की अनुमति देता है जो एक व्यक्ति डेवलपर टूल्स के साथ कर सकता है: नेविगेट करना, DOM को पढ़ना जब यह रेंडर होता है, अनुरोधों को इंटरसेप्ट करना, स्क्रीनशॉट कैप्चर करना, और पृष्ठ में जावास्क्रिप्ट का मूल्यांकन करना। यह गाइड बताता है कि सीडीपी क्या है, इसके डोमेन और संदेश कैसे काम करते हैं, और एक सीडीपी एंडपॉइंट से जुड़ना आपको एक क्लाउड ब्राउज़र चलाने के लिए आवश्यक है।
सीडीपी क्या है, सही मायने में
क्रोम डेवलपर टूल्स प्रोटोकॉल उपकरणों को क्रोमियम, क्रोम और अन्य ब्लिंक-आधारित ब्राउज़रों को इंस्ट्रूमेंट, निरीक्षण, डिबग और प्रोफाइल करने की अनुमति देता है। यह ब्राउज़र के आंतरिक हिस्सों के लिए एक रिमोट-कंट्रोल इंटरफेस है, जिसे क्रोम डेवलपर टूल्स टीम द्वारा बनाए रखा जाता है। आधिकारिक प्रोटोकॉल परिभाषा प्रत्येक डोमेन, कमांड और घटना की सूची देती है, और ब्राउज़र उसी परिभाषा को इसके /json/protocol/ एंडपॉइंट पर उजागर करता है।
सीडीपी अपने आप में एक स्क्रैपिंग उपकरण नहीं है - यह उपकरणों के नीचे की परत है। पप्पेटियर, प्लेयराइट, क्रोमेडीपी और लाइटहाउस सभी अपने उच्च-स्तरीय कॉल को सीडीपी कमांड में बदलते हैं, यही कारण है कि वे किसी भी ब्राउज़र को चला सकते हैं जो इसे बोलता है।
सीडीपी कैसे संगठित है: डोमेन, कमांड और घटनाएं
सीडीपी ब्राउज़र के सतह को डोमेन्स में विभाजित करता है, और प्रत्येक डोमेन एक सेट के कमांड और घटनाओं का मालिक होता है। 60 से अधिक डोमेन हैं; वे जो एक स्क्रैपर सबसे अधिक छूता है वह एक छोटा उपसमुच्चय है:
| डोमेन | यह क्या नियंत्रित करता है |
|---|---|
पृष्ठ |
नेविगेशन, जीवन चक्र, स्क्रीनशॉट, पीडीएफ में प्रिंट |
नेटवर्क |
अनुरोध, प्रतिक्रियाएँ, हेडर, इंटरसेप्शन |
डीओएम |
दस्तावेज़ पेड़, नोड, विशेषताएँ |
रनटाइम |
पृष्ठ संदर्भ में जावास्क्रिप्ट का मूल्यांकन करना |
लक्षित |
टैब, फ्रेम, और नए ब्राउज़र संदर्भ बनाना |
इनपुट |
संश्लेषणात्मक माउस, कीबोर्ड, और टच इवेंट्स |
ब्राउज़र |
ब्राउज़र-स्तरीय क्रियाएँ और विंडो प्रबंधन |
एक कमांड एक अनुरोध है जो आप एक डोमेन को भेजते हैं (उदाहरण के लिए, Page.navigate)। एक घटना एक संदेश है जो ब्राउज़र आपको तब भेजता है जब कुछ होता है (उदाहरण के लिए, Network.responseReceived)। जैसे कि पप्पेटियर की उच्च-स्तरीय कॉल page.goto() एक Page.navigate कमांड के साथ-साथ नीचे जीवन चक्र की घटनाओं पर एक प्रतीक्षा है।
परिवहन: एक वेब-सॉकेट पर JSON संदेश
सीडीपी संचार एक निश्चित संरचना के सिलेराइज्ड JSON ऑब्जेक्ट है, जो वेब-सॉकेट कनेक्शन के माध्यम से ले जाया जाता है। एक क्लाइंट ब्राउज़र के डिबगिंग वेब-सॉकेट से कनेक्ट होता है, फिर JSON डेटा प्रारूप द्वारा परिभाषित संदेशों का आदान-प्रदान करता है।
एक कमांड एक id, एक method जो डोमेन और कमांड का नाम देता है, और एक params ऑब्जेक्ट को ले जाता है:
json
// ब्राउज़र को भेजा गया कमांड
{ "id": 1, "method": "Page.navigate", "params": { "url": "https://example.com" } }
// मेल खाते id के साथ लौटता परिणाम
{ "id": 1, "result": { "frameId": "…", "loaderId": "…" } }
// ब्राउज़र द्वारा धकेल गया एक घटना (कोई id नहीं)
{ "method": "Page.loadEventFired", "params": { "timestamp": 12345.6 } }
id एक परिणाम को उस आदेश के साथ संबंधित करता है जिसने इसे उत्पन्न किया; घटनाएँ बिना id के आती हैं क्योंकि ब्राउज़र इन्हें अपनी अनुसूची पर उत्पन्न करता है। एक क्लाइंट सामान्यतः वेबस्केट खोलता है, उन डोमेन को सक्रिय करता है जो उसे महत्वपूर्ण लगते हैं (Network.enable, Page.enable), फिर सत्र के बाकी हिस्से के लिए आदेशों और घटनाओं को इंटरलीव करता है।
प्रोटोकॉल संस्करण: टिप-ऑफ-ट्री और स्थिर
CDP दो ट्रैक में शिप होता है। टिप-ऑफ-ट्री (tot) संस्करण नवीनतम क्रोमियम को ट्रैक करता है और बार-बार बदलता है, बिना पीछे की संगतता की कोई गारंटी के। स्थिर 1.3 संस्करण, जो Chrome 64 में पेश किया गया था, टूल्स के लिए स्थिरता को लक्षित करने वाला एक समर्थित उपसमुच्चय है। एक अलग v8-inspector सतह नोड.जेएस के लिए डिबगिंग और प्रोफाइलिंग के लिए समान प्रोटोकॉल स्टाइल को उजागर करती है। अधिकांश स्वचालन लाइब्रेरी एक क्रोमियम निर्माण को पिन करती हैं और मिलते-जुलते प्रोटोकॉल का उपयोग करती हैं, यही कारण है कि एक लाइब्रेरी और एक ब्राउज़र संस्करण के एक साथ चलने की अपेक्षा की जाती है।
CDP का उपयोग कौन करता है
CDP एक व्यापक सेट के उपकरणों के तहत साझा आधार है:
- Chrome DevTools — ब्राउज़र में पैनल एक CDP क्लाइंट है।
- Puppeteer — डिफ़ॉल्ट रूप से CDP के माध्यम से कनेक्ट करता है।
- Playwright — CDP के माध्यम से क्रोमियम को संचालित करता है (और फ़ायरफ़ॉक्स और वेबकिट के लिए अपने प्रोटोकॉल लागू करता है)।
- chromedp — एक गो लाइब्रेरी जो सीधे CDP से बात करती है।
- Lighthouse — CDP के माध्यम से प्रदर्शन और ऑडिट डेटा एकत्र करता है।
चूंकि वे सभी एक समान प्रोटोकॉल बोलते हैं, इनमें से कोई भी एक ब्राउज़र से कनेक्ट हो सकता है जिसे उन्होंने लॉन्च नहीं किया — जब तक कि वह ब्राउज़र एक CDP एंडपॉइंट को उजागर करता है। उभरता हुआ क्रॉस-ब्राउज़र मानक, WebDriver BiDi, उसी द्विदिशीय आदेश और घटना मॉडल पर आधारित है जिसे CDP ने प्रारंभ किया था।
CDP और क्लाउड ब्राउज़र
एक CDP एंडपॉइंट आपके मशीन पर होना आवश्यक नहीं है। क्योंकि प्रोटोकॉल एक वेबस्केट पर चलती है, एक क्लाइंट कहीं भी एक ब्राउज़र से कनेक्ट कर सकता है — जो ठीक उसी तरह काम करता है जैसे एक क्लाउड ब्राउज़र। Scrapeless Scraping Browser एक एकल वेबस्केट यूआरएल पर एक CDP एंडपॉइंट को उजागर करता है, इसलिए एक CDP क्लाइंट वास्तविक क्लाउड क्रोमियम से कनेक्ट होता है बजाय एक स्थानीय से:
- Puppeteer
puppeteer.connect({ browserWSEndpoint })के साथ कनेक्ट करता है। - Playwright
chromium.connectOverCDP()के साथ कनेक्ट करता है। - chromedp
NewRemoteAllocatorके साथ कनेक्ट करता है।
कोड अपरिवर्तित है; केवल एंडपॉइंट बदलता है। ब्राउज़र क्लाउड में एक वास्तविक क्रोमियम फिंगरप्रिंट और आवासीय ईग्रेस के साथ चलता है, और आपकी CDP-भाषी लाइब्रेरी इसे बिल्कुल उसी तरह चालित करती है जैसे वह एक स्थानीय ब्राउज़र को करती।
उसी एंडपॉइंट को स्टॉक प्रोटोकॉल के अलावा कुछ डोमेन के लिए भी उत्तर दिया जाता है — Captcha.* CAPTCHA पहचान और समाधान के लिए, Agent.* अनुकरणित क्लिक और टाइपिंग के लिए — Scrapeless CDP API संदर्भ पर प्रलेखित। एक क्लाइंट जो पहले से ही CDP बोलता है, इन्हें उसी तरह कॉल कर सकता है जैसे वह Page.navigate को कॉल करता है।
फ्री प्लान पर अपना API की प्राप्त करें app.scrapeless.com पर।
फ्री प्लान पर अपना API की प्राप्त करें: app.scrapeless.com
निष्कर्ष: हर क्रोमियम टूल के अंतर्गत एक प्रोटोकॉल
CDP ब्राउज़र ऑटोमेशन के तहत सामान्य परत है: एक सेट डोमेन, JSON आदेश और घटनाओं के रूप में वेबस्केट पर विनिमय की गई, जो एक टूल को क्रोमियम ब्राउज़र को नियंत्रित करने और अवलोकन करने की अनुमति देती है। इसे समझना यह स्पष्ट करता है कि क्यों Puppeteer, Playwright, और chromedp के नीचे समान अनुभव होते हैं, एक लाइब्रेरी और एक ब्राउज़र संस्करण एक साथ चलते हैं, और एक दूरस्थ ब्राउज़र से कनेक्ट करना एक अलग वेबस्केट यूआरएल की ओर इशारा करना इतना आसान क्यों है। क्लाउड ब्राउज़र को CDP के माध्यम से पायथन से चलाने के एक उदाहरण के लिए, Scrapling उत्पादन-स्क्रेपर गाइड देखें, और Scrapeless मूल्य निर्धारण पृष्ठ पर योजनाओं की तुलना करें।
CDP के माध्यम से क्लाउड ब्राउज़र को संचालित करने के लिए तैयार?
हमारे समुदाय में शामिल हों एक मुफ्त योजना प्राप्त करने के लिए और CDP-आधारित ऑटोमेशन का निर्माण कर रहे डेवलपर्स के साथ कनेक्ट करें: Discord · Telegram।
app.scrapeless.com पर मुफ्त स्क्रैपिंग ब्राउज़र रUNTIME के लिए साइन अप करें और अपने CDP क्लाइंट को एक वेब सॉकेट URL के माध्यम से एक क्लाउड ब्राउज़र पर पॉइंट करें।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: क्या CDP और WebDriver एक ही हैं?
नहीं। CDP क्रोमियम का अपना निम्न-स्तरीय, द्विदिशीय प्रोटोकॉल है (एक वेब सॉकेट के माध्यम से आदेश और घटनाएँ); क्लासिक वेबड्राइवर एक अनुरोध-प्रतिक्रिया HTTP प्रोटोकॉल है जिसे W3C द्वारा मानकीकृत किया गया है। नया WebDriver BiDi मानक विभिन्न ब्राउज़रों में CDP-शैली का द्विदिशीय मॉडल लाता है।
प्रश्न: क्या मैं स्क्रैपर लिखते समय सीधे CDP का उपयोग करता हूँ?
आमतौर पर नहीं। आप एक लाइब्रेरी का उपयोग करते हैं — Puppeteer, Playwright, या chromedp — जो आपके कॉल्स को CDP कमांड्स में परिवर्तित करती है। आप केवल तब कच्चे CDP में जाते हैं जब किसी लाइब्रेरी द्वारा सक्षमताओं को उजागर नहीं किया गया हो।
प्रश्न: क्या Playwright CDP का उपयोग करता है?
क्रोमियम के लिए, हाँ। Playwright CDP के माध्यम से क्रोमियम को नियंत्रित करता है; फ़ायरफॉक्स और वेबकिट के लिए यह अपने खुद के प्रोटोकॉल का उपयोग करता है, यही कारण है कि कुछ CDP-विशिष्ट सुविधाएँ केवल क्रोमियम के लिए होती हैं।
प्रश्न: एक उपकरण CDP के माध्यम से एक ब्राउज़र से कैसे जुड़ता है?
ब्राउज़र एक डिबगिंग वेब सॉकेट URL को उजागर करता है। क्लाइंट उस वेब सॉकेट को खोलता है और JSON कमांड और घटनाओं का आदान-प्रदान करता है। Scrapeless जैसे क्लाउड ब्राउज़र आपको सीधे वह वेब सॉकेट URL देता है, ताकि वही क्लाइंट एक रिमोट ब्राउज़र से कनेक्ट हो सके।
प्रश्न: टॉड-ऑफ-ट्री और स्थिर CDP में क्या अंतर है?
टिप-ऑफ-ट्री नवीनतम क्रोमियम को ट्रैक करता है और बिना सूचना के बदल सकता है; स्थिर 1.3 (Chrome 64 से) एक स्थायी उपसमुच्चय है जिस पर उपकरण भरोसा कर सकते हैं। लाइब्रेरी आमतौर पर एक क्रोमियम निर्माण और इसके साथ आने वाले प्रोटोकॉल संस्करण को पिन करती हैं।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



