- वेब पेजों को एकल HTML फ़ाइल में bundle करता है
- सामान्य "Save Page" फीचर से अलग,
monolith सिर्फ लक्षित दस्तावेज़ ही नहीं बल्कि CSS, इमेज, और JavaScript assets को भी एक साथ शामिल करके सहेजता है
- सभी assets को data URL के रूप में embed करता है, ताकि नेटवर्क कनेक्शन न होने पर भी पेज इंटरनेट पर जैसा दिखता है वैसा ही render किया जा सके
- Rust में लिखा गया है, इसलिए Mac/Windows/Linux सभी पर install किया जा सकता है: cargo/brew/choco/snap/apk..
उपयोग का तरीका
विकल्प
-a: audio source को बाहर करें
-b: कस्टम base URL का उपयोग करें
-B: किसी विशेष domain से assets लाने पर रोक
-c: CSS को बाहर करें
-C: file से cookies पढ़ें
-d: केवल निर्दिष्ट domain(s) से assets लाने की अनुमति दें
-e: network errors को अनदेखा करें
-E: कस्टम encoding के साथ दस्तावेज़ सहेजें
-f: frames छोड़ें
-F: web fonts को बाहर करें
-h: help जानकारी दिखाएँ
-i: images हटाएँ
-I: document isolation
-j: JavaScript को बाहर करें
-k: अमान्य X.509 (TLS) certificates स्वीकार करें
-M: timestamp और URL जानकारी न जोड़ें
-n: NOSCRIPT elements की सामग्री निकालें
-o: output को file में लिखें (STDOUT के लिए “-” का उपयोग करें)
-s: quiet mode
-t: network request timeout समायोजित करें
-u: कस्टम User-Agent दें
-v: video को बाहर करें
domain whitelist और blacklist
-d और -B विकल्पों के ज़रिए उन domains को नियंत्रित किया जा सकता है जिनसे assets लाए जा सकते हैं।
dynamic content
- Monolith में JavaScript engine नहीं है, इसलिए शुरुआती लोड के बाद डेटा fetch और display करने वाली websites के लिए अतिरिक्त टूल की ज़रूरत पड़ सकती है।
- उदाहरण के लिए, Chromium(Chrome) का उपयोग करके ऐसे पेजों के लिए इसे preprocessor की तरह चलाया जा सकता है।
proxy सेटिंग
https_proxy, http_proxy, no_proxy environment variables सेट करने होंगे।
लाइसेंस
- Creative Commons Zero v1.0 Universal
- लेखक ने संभव कानूनी सीमा तक इस सॉफ़्टवेयर के सभी copyright और संबंधित अधिकारों को विश्वभर में public domain को समर्पित किया है
GN⁺ की राय
monolith वेब पेजों को ऑफलाइन भी मूल रूप में सुरक्षित रखने वाला एक प्रभावी टूल है, जो शोधकर्ताओं और डेवलपर्स के लिए उपयोगी हो सकता है।
- यह टूल वेब archiving या content preservation में रुचि रखने वालों के लिए खास तौर पर आकर्षक हो सकता है, क्योंकि यह इंटरनेट कनेक्शन न होने पर भी वेब पेज की समीक्षा करने की सुविधा देता है।
- आलोचनात्मक दृष्टि से देखें तो dynamic रूप से लोड होने वाली सामग्री को संभाल न पाने की सीमा है, जिससे उपयोगकर्ताओं को अतिरिक्त टूल इस्तेमाल करने की असुविधा हो सकती है।
- समान कार्यक्षमता देने वाले अन्य प्रोजेक्ट्स में HTTrack और Wget शामिल हैं, जिनका उपयोग भी websites को offline सहेजने के लिए किया जा सकता है।
monolith का उपयोग करने से पहले, जिस वेब पेज को सहेजना है उसके copyright और उपयोग अधिकारों की जाँच करना महत्वपूर्ण है, और यह ध्यान रखना चाहिए कि सहेजी गई सामग्री का उपयोग किसी कानूनी समस्या का कारण न बने।
3 टिप्पणियां
बंडल फ़ाइल के रूप में सेव होने से झुंझलाहट होती थी, लेकिन अगर 1 फ़ाइल में सेव हो जाए तो बढ़िया रहेगा, हाहा। स्टैटिक साइट का आर्काइव बनाकर वेब सर्वर पर अपलोड करते समय यह काम का रहेगा ^^
मैंने Bicycle - साइकिल कैसे चलती है, इसके सिद्धांत पर सब कुछ को archive करके देखा।
पहले मैं इसी तरह का एक browser extension इस्तेमाल करता था, SingleFile - वेबपेज को एक HTML फ़ाइल में सेव करने वाला टूल,
लेकिन दोनों टूल सामान्य webgl कामकाज को सही तरह से नहीं चला पाए।
monolith ने तो मॉडल डाउनलोड ही नहीं किया, और
SingleFile ने मॉडल डाउनलोड करके पहली image तक तो render कर दी, लेकिन उसका interactive behavior काम नहीं करता।
हर output का आकार 2MB और 9MB है। Developer Tools में hard refresh करने पर 3MB डाउनलोड होता है।
Hacker News टिप्पणियाँ
README फ़ाइल में यह सीखा कि macOS पर Google Chrome का उपयोग करके JavaScript चलने के बाद वेब पेज की HTML फ़ाइल कैसे प्राप्त की जाए। इसका विवरण TIL में लिखा है, और Playwright Chromium का उपयोग करने वाला उनका अपना टूल shot-scraper भी इसी तरह की सुविधा देता है।
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.htmlजितना संभव हो, single-file pages वितरित करना पसंद है। वजह यह सिद्धांत है कि source view के ज़रिए सब कुछ देखा जा सकना चाहिए। ऐसे पेज self-contained होते हैं और इन्हें offline इस्तेमाल किया जा सकता है या फिर से upload किया जा सकता है। TypeScript का उपयोग करके गेम लिखने और उसे एक single HTML file में build करने के लिए एक सरल build system बनाया। जब browser TypeScript syntax को support करने लगेंगे, तब compiler या build step की ज़रूरत नहीं रहेगी।
SingleFile की तुलना में यह कैसा है?
बाद में पढ़ने के लिए वेब पेज सेव करने वाली सेवाओं का अक्सर उपयोग करता हूँ, लेकिन जब वास्तव में पढ़ने जाता हूँ तो कई बार पेज अब मौजूद नहीं होता। सोच रहा हूँ कि offline archive version पर जाना बेहतर विकल्प हो सकता है।
Wayback Machine से पूरी वेबसाइट restore करने के तरीके पर सवाल। एक प्रिय वेबसाइट का database delete हो गया, लेकिन उसकी पूरी सामग्री Internet Archive में मौजूद है। लगता है कि manual scraping और Python से CSS URL ठीक करने जैसे काम करने पड़ सकते हैं।
कुछ साल पहले ऐसा ही कुछ लिखा था, और मुख्य रूप से Go प्रोग्राम में HTML generate करते समय इसका उपयोग करता हूँ। बाहरी stylesheet और JavaScript के links का उपयोग करता है, और फिर उन्हें एक single HTML file में प्रोसेस कर देता है।
राय है कि यदि तय की गई depth तक links को follow करने का support हो तो अच्छा होगा। Httrack जैसी functionality का उल्लेख किया गया।
यह टूल दिलचस्प है, लेकिन राय है कि यह browser द्वारा वेब पेज प्रोसेस करने के तरीके की समस्या को हल करने के लिए एक अस्थायी workaround है। तर्क है कि browser को पेज को "blah.html" फ़ाइल और "blah_files" फ़ोल्डर के रूप में सेव करने के बजाय, दोनों को एक ही फ़ोल्डर में समेटकर आसानी से move और copy करने योग्य बनाना चाहिए।
wgetका उपयोग करके वेब पेज और उसकी सभी assets डाउनलोड करने के तरीके की व्याख्या और documentation लिंक साझा किया गया।अगस्त 2019 में Hacker News पर पोस्ट किए गए "Show HN: CLI tool for saving web pages as a single file" का संबंधित लिंक साझा किया गया.