domcurl: curl + JavaScript

लंबे समय तक मैं सोच रहा हूं कि वेब का भविष्य कैसा दिखता है जब हम परंपरागत वेब ब्राउज़र के रूप में जानते हैं। मैंने इसे [हेडलेस वेब](/ द-हेडलेस-वेब /) कहा और मैं जवाब देना चाहता था "क्या होगा अगर सब कुछ 'वेब' द्वारा संचालित किया गया था, लेकिन आपने कभी ब्राउज़र नहीं देखा?"। विशेष रूप से मेरा मानना ​​है कि यदि आपके पास एक पूर्ण ब्राउज़र तक पहुंच है, लेकिन "क्रोम" के लिए कोई दृश्य नहीं है तो सेवाओं के एक नए सेट के लिए एक बड़ा अवसर है।

Using the browser as a service is an incredible opportunity. It allows us to take the declarative HTML and combine it with the developer defined procedural execution of JavaScript and run deep analysis on the content.

...

Running a browser on the server will allow us to more easily build services which parse data that is generated dynamically, it will allow us to more easily us run our own logic against the logic in a page (form fill as an example) and I believe that it will open up the ability to more effectively run actions against data embedded on the page.

इसमें थोड़ी देर लग गई है, लेकिन मुझे लगता है कि हम वहां जा रहे हैं।

मैं [Puppeteer] द्वारा enamored हूँ (https://developers.google.com/web/tools/puppeteer/)। Puppeteer एक जावास्क्रिप्ट लाइब्रेरी है जो क्रोम देव टूल्स प्रोटोकॉल के शीर्ष पर बैठती है और यह आपको क्रोम ब्राउज़र को स्वचालित और स्क्रिप्ट करने की अनुमति देती है।

मेरे दिन-प्रति-दिन काम में बहुत सारे डिबगिंग वेब सर्वर शामिल हैं और सुनिश्चित करना शामिल है। कई डेवलपर्स की तरह मैं वेब सर्वर पर अनुरोध करने के लिए 'curl` का उपयोग करता हूं और प्रतिक्रिया की जांच करता हूं। यह एक अद्भुत उपयोगिता है, हालांकि आज की दुनिया में कई डेवलपर ऐसी साइटें बना रहे हैं जो बहुत सारी जावास्क्रिप्ट का उपयोग करके बनाए गए हैं और इससे पूर्ण प्रतिक्रिया का निरीक्षण करना असंभव हो जाता है।

मैंने संसाधन लाने और domcurl नामक पृष्ठ पर जावास्क्रिप्ट चलाने के लिए cUrl जैसी उपयोगिता बनाने का निर्णय लिया।

domcurl एक [छोटा नोडजेएस एप्लीकेशन] है (https://github.com/PaulKinlan/domcurl) जो Puppeteer का उपयोग करता है और निम्न आदेश जारी करके स्थापित किया जा सकता है: 'npm i domcurlCurl कमांड की तरह आप संसाधन लाने और पेज पर जेएस चलाने के लिए एक सरल 'domcurl [url] जारी कर सकते हैं।

यह सभी 'कर्ल' को दोहराने नहीं करता है, लेकिन यह निम्नलिखित विशेषताओं के साथ काफी विशिष्ट है।

  • लाने के लिए एक यूआरएल निर्दिष्ट करें। यानी, 'domcurl [url] *' -v के साथ प्रतिक्रिया शीर्षलेख का निरीक्षण करें। i.e, domcurl -v [url] * '-bi'e' के साथ कुकीज़ सेट करें, 'domcurl [url] -b "test = hello; डोमेन = airhorner.com; केवल"; -बी "हैलो = दुनिया; डोमेन = airhorner.com; केवल"; *-H तर्क का उपयोग कर कस्टम हेडर जोड़ें। * '-O और STDERR के साथ मैन्युअल रूप से STDOUT सेट करें' --stderr` के साथ

मुझे यह काफी उपयोगी घटना मिल रही है, हालांकि यह 'curl` जैसे परिणामों को स्ट्रीम नहीं कर सकता है क्योंकि इसे सीएसएस और जेएस को डाउनलोड और निष्पादित करने की प्रतीक्षा करनी है।

मैंने जावास्क्रिप्ट और क्रोम के लिए विशिष्ट कुछ अतिरिक्त विशेषताओं को जोड़ने की स्वतंत्रता भी ली।

  • आउटपुट एक क्रोम देव टूल्स ट्रेस फ़ाइल (स्क्रीन हॉट सहित)। 'Domcurl --url https://example.com --trace test.json` * इसे किसी जावास्क्रिप्ट मॉड्यूल के रूप में शामिल करें यदि आपको इसे किसी भी में एकीकृत करने की आवश्यकता है आपके मौजूदा अनुप्रयोगों में से।
const {domcurl} = require('domcurl');
domcurl(`https://paul.kinlan.me/`, {});

जबकि यह टूल पूर्ण सेवा की तुलना में डेमो से अधिक है, मुझे लगता है कि [हेडलेस वेब](/ द-हेडलेस-वेब /) परिपक्व हो रहा है और Puppeteer और अन्य टूल जैसे टूल वेब की निरंतर शक्ति का एहसास करने में हमारी सहायता करने जा रहे हैं। हमें बस इसके लिए निर्माण करने की जरूरत है।

About Me: Paul Kinlan

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.