3 पॉइंट द्वारा GN⁺ 2023-09-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • वेबसाइट की सभी फ़ाइलों को ZIP में कंप्रेस करके फिर Base64 में एन्कोड कर डोमेन के बाद जोड़ दिया जाए, तो वही पता अपने-आप में एक पूरा वेबसाइट बन जाता है।
  • अलग से फ़ाइल अपलोड या सर्वर स्टोरेज के बिना सिर्फ़ URL शेयर करके साइट पहुँचाई जा सकती है।
  • एक लाइन के कमांड से ZIP कंप्रेशन, Base64 एन्कोडिंग और URL जनरेशन किया जा सकता है, और अगर command line न हो तो ZIP फ़ाइल को drag करने का तरीका भी समर्थित है।
  • सर्वर कंटेंट को सिर्फ़ 15 मिनट तक RAM में रखता है और उसके बाद हटा देता है; वही लिंक दोबारा खोलने पर ही फिर से प्रोसेस होता है।
  • यह Lwan web server project का हिस्सा होने के कारण open source है, और QR code के ज़रिए कागज़ पर प्रिंट व स्कैन करना भी संभव है।

smolsite की अवधारणा

  • पूरा साइट URL के भीतर शामिल होता है, इसलिए पता शेयर करने पर साइट खुद भी साथ में पहुँच जाती है।
  • index.html, mylogo.png जैसी दो फ़ाइलों वाले उदाहरण की तरह, कई फ़ाइलों को बाँधकर एक ही पते में बदला जा सकता है।

smolsite बनाने का तरीका

  • सभी फ़ाइलों को ZIP फ़ाइल में कंप्रेस करके Base64 में एन्कोड करें, फिर उसे https://smolsite.zip/ के बाद जोड़ दें।
    • उदाहरण कमांड:

FAQ

  • अगर command line न हो

    • नीचे की बैंगनी पट्टी पर ZIP फ़ाइल drag करने से शेयर किया जा सकता है।
  • क्या इसे कागज़ पर host किया जा सकता है

    • हाँ, और QR code पर क्लिक करने पर प्रिंट व स्कैन योग्य संस्करण देखा जा सकता है।
  • क्या यह open source है

  • सर्वर पर ZIP को कैसे प्रोसेस किया जाता है

    • कंटेंट सर्वर पर प्रोसेस होकर 15 मिनट तक RAM में रखा जाता है, उसके बाद हटा दिया जाता है।
    • लेकिन अगर कोई वही लिंक फिर से खोले, तो उसे दोबारा प्रोसेस किया जाता है।
  • ZIP bomb से कैसे निपटा जाता है

    • deflated डेटा बिना किसी बदलाव के सीधे browser को भेजा जाता है, और recursive decompression न होने से कुछ हद तक सुरक्षा मिलती है।
  • क्या कंटेंट डाउनलोड या डिलीट किया जा सकता है

    • smolsite के ज़रिए सटीक URL शेयरिंग को रोकने की पूरी कोशिश की जाती है, लेकिन कंटेंट URL के भीतर होने के कारण उसे पूरी तरह हटाना संभव नहीं है।
      • जिसके पास लिंक है, वह smolsite के बिना भी कंटेंट निकाल सकता है

1 टिप्पणियां

 
GN⁺ 2023-09-07
Hacker News की राय
  • बढ़िया
    https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
    • बढ़िया। तो TinyURL से भी वेबसाइट होस्ट करवाई जा सकती है
      https://tinyurl.com/dmk9e4m2
    • मैंने इस लिंक से QR code बनाने की कोशिश की, और यह सच में कोई बड़ी बात नहीं थी। QR code में वेबसाइट होस्ट कर पाना कमाल है
  • जिन्हें पता न हो उनके लिए जोड़ दूं, data URI से भी यही काम किया जा सकता है
    data:text/html,My%20small%20website
    Look,%20it's%20real!
    चाहें तो data URI generator से base64 encoding भी कर सकते हैं। smolsite का फायदा यह है कि zip होने पर data URI की तुलना में थोड़ा ज़्यादा डाल सकते हैं, और कुछ JavaScript API smolsite URL पर काम करते हैं लेकिन data URI पर नहीं
    • इस technique से एक आसान-सा notepad बनाया जा सकता है
      data:text/html,
      इसे bookmarks toolbar में रखकर इस्तेमाल करता हूं
    • पहले ही लिख देता हूं, इससे पहले कि कोई ऐसा बनाए जिसमें एक smolsite उस domain पर service worker install कर दे और बाकी सभी smolsite का analytics data अपने server पर भेजे
    • Base64 + gzip इस्तेमाल करके एक tweet में करीब 5KB text store कर रहा हूं: https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
    • अच्छा हो या बुरा, web browsers और URL shorteners data URL खोलने और redirect करने को block करते हैं, इसलिए यह मुख्य तौर पर browser bookmarks के काम ही आता है
      [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
  • URL में अजीब चीज़ें डालने के विषय पर prime number के रूप में व्यक्त कुत्ता भी है: https://geonnave.github.io/primg/#17976931348623159077293051...
    • यह हैरान करने वाला है। सिर्फ यह सोच लेना भी कमाल है कि image को prime number के binary representation के रूप में दिखाया जा सकता है
  • मेरा जवाब भी URL के अंदर है
    https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
  • अच्छा है। इससे nopaste याद आता है, एक pastebin जो URL के अंदर text को LZMA से compress करके और base64 में encode करके store करता है
    [0] https://nopaste.boris.sh/
  • यह तरीका decompression के लिए content को server पर भेजता है। थोड़ा और जटिल तरीके में zip को anchor part में रखा जा सकता है, और response client-side पर वहीं से उसे extract करने वाला code दे सकता है

हालांकि anchor वाला हिस्सा सर्वर को भेजा नहीं जाता, इसलिए सर्वर चाहे भी तो इसके ज़रिए भेजे जा रहे हानिकारक content की जांच नहीं कर पाएगा

  • मैंने भी यही सोचा था। अगर static content server ऐसा routing glob इस्तेमाल करे जो सारे traffic को उसी web page पर भेज दे, तो anchor के बिना भी यह संभव है। इससे hosting वाकई बहुत सरल हो जाती है
  • ऐसी चीज़ें सच में शानदार हैं, और मेरे हिसाब से Show HN का असली एहसास यही होना चाहिए—दूसरे संगठनों द्वारा product push करने के लिए इस्तेमाल किए जाने वाले marketing tool जैसा नहीं
    • ऐसी चीज़ें भी अच्छी हैं, लेकिन यह भी ध्यान रखना चाहिए कि Y Combinator एक startup incubator है। लोग अपने products दिखाएं, इसे एक हद तक encourage किया जाना सही लगता है
    • मैं इसे advertising नहीं मानता। Hacker News पर बहुत से लोग यह देखने आते हैं कि hackers क्या बना रहे हैं, और मैं भी इसी वजह से आता हूं
      अब तक देखे गए सभी Show HN posts दिलचस्प रहे हैं, और उन्होंने मुझे अपना project शुरू करके उसे इतना polish करने की motivation दी कि उसे यहां दिखा सकूं। जब कोई और मेरा काम submit करता है और मैं वहां उसके बारे में बात कर पाता हूं, तो बहुत अच्छा लगता है
    • क्या आपको ऐसा लगता है कि ज्यादा नए/अनोखे Show HN posts corporate किस्म के posts के नीचे दब जाते हैं?
    • इसलिए तो दिलचस्प Show HN posts को upvotes मिलते हैं
  • पहले मैंने Borges की Library of Babel को इसी तरह implement करने का idea सोचा था। सारा text URL में डालना, फिर ज्यादा sophisticated encoding से English words को optimize करना, और उसके ऊपर ऐसा search system लगाना जिससे अपना नाम या text snippets वगैरह ढूंढे जा सकें
    जाहिर है, आखिर में URL length limit से टकराना पड़ेगा, लेकिन curator URL bundles को जोड़कर बड़े text बनाने के लिए ऊपर एक layer भी रख सकते हैं। थोड़ी LLM magic डालकर bundles generate भी कराए जा सकते हैं, और तब यह ऐसी library बन जाएगी जिसमें सिर्फ अब तक लिखी गई सारी किताबें ही नहीं, बल्कि लिखी जा सकने वाली सारी किताबें भी होंगी
    बेशक, यह मज़ाक है। मुझे पता है कि यह उस बात जैसा ही है कि Notepad में भी मौजूद हर किताब पहले से है, बस आपको उसे खुद type करना है
    • इससे https://libraryofbabel.info/ काफी याद आती है
    • मेरे पास भी पहले ऐसा ही एक idea था। मैं image, audio, web page जैसे दूसरे media types भी support करना चाहता था, और यह सच में मज़ेदार experiment था
      https://mkaandorp.github.io/hdd-of-babel/
  • पहले आए कुछ similar works ये हैं
    https://news.ycombinator.com/item?id=34312546
    https://news.ycombinator.com/item?id=2464213
    • पहले link में Yahoo ने URL में विशाल base64 encoded JSON object डाला था, यह comment देखकर मुझे अपनी पिछली नौकरी में की गई एक डरावनी चीज़ याद आ गई
      महंगे event calendar module के लिए website vendor को पैसे न देने के लिए, मैंने एक public page code किया था जो data-events attribute में base64 encoded simple JSON event schema डालकर calendar बनाता था। Staff private page पर public page से existing event data लाते, calendar builder को pre-fill करते, edit करते, फिर नया code snippet निकालकर public page में paste कर देते थे
      मूल रूप से यह ठीक काम करता था, लेकिन आखिर में शायद हमने calendar add-on के पैसे दे ही दिए थे
    • HN link अभी नहीं मिल रहा, लेकिन कुछ साल पहले मैंने यहां post किया हुआ Twitter CDN project यह रहा। यह base64+gzip data URI तरीका है
      https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
  • मज़ेदार है, लेकिन इसके practical use cases भी हो सकते हैं। फिर भी hackers को सावधान रहना चाहिए
    • मेरे दिमाग में तुरंत एक शानदार तरीका आया जिससे किसी unsuspecting party को malicious payload भेजा जा सकता है। अच्छा WAF हो तो इसे suspicious मानकर block कर देगा, लेकिन कुछ tricks से शायद bypass भी किया जा सके