3 Punkte von GN⁺ 2023-09-07 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Hosting-Ansatz, bei dem alle Dateien einer Website als ZIP komprimiert und anschließend Base64-codiert an die Domain angehängt werden, sodass die Adresse selbst zur vollständigen Website wird
  • Eine Struktur, mit der sich eine Website allein durch Teilen der Adresse übertragen lässt, ohne separaten Datei-Upload oder Speicherung auf einem Server
  • ZIP-Komprimierung, Base64-Codierung und URL-Erzeugung werden mit einer einzigen Kommandozeile erledigt; wenn keine Kommandozeile verfügbar ist, wird auch das Drag-and-drop einer ZIP-Datei unterstützt
  • Der Server hält Inhalte nur 15 Minuten im RAM vor und verwirft sie danach; sie werden nur erneut verarbeitet, wenn derselbe Link wieder geöffnet wird
  • Als Teil des Lwan-Webserver-Projekts Open Source; auch Papierausdruck und Scannen über QR-Code sind möglich

Konzept von smolsite

  • Die gesamte Website ist in der URL enthalten; beim Teilen der Adresse wird die Website selbst mit übertragen
  • Wie im Beispiel mit zwei Dateien (index.html, mylogo.png) lassen sich mehrere Dateien bündeln und in eine einzige Adresse umwandeln

So erstellt man ein smolsite

  • Alle Dateien als ZIP-Datei komprimieren, Base64-codieren und anschließend an https://smolsite.zip/ anhängen

FAQ

  • Wenn keine Kommandozeile verfügbar ist

    • Eine ZIP-Datei auf die violette Leiste unten ziehen, um sie zu teilen
  • Ob Hosting auf Papier möglich ist

    • Ja; durch Klicken auf den QR-Code lässt sich eine druck- und scanbare Version anzeigen
  • Ob es Open Source ist

  • Wie ZIP-Dateien auf dem Server verarbeitet werden

    • Inhalte werden auf dem Server verarbeitet und 15 Minuten im RAM vorgehalten, danach werden sie gelöscht
    • Öffnet jedoch jemand denselben Link erneut, werden sie erneut verarbeitet
  • Umgang mit ZIP-Bomben

    • Deflate-Daten werden unverändert direkt an den Browser übertragen; da keine rekursive Dekompression stattfindet, besteht ein gewisser Schutz
  • Ob Inhalte heruntergeladen oder gelöscht werden können

    • Es wird so weit wie möglich versucht, das Teilen der exakten URL über smolsite zu verhindern; da sich die Inhalte jedoch in der URL befinden, ist eine vollständige Löschung nicht möglich
      • Wer den Link besitzt, kann die Inhalte auch ohne smolsite extrahieren

1 Kommentare

 
GN⁺ 2023-09-07
Hacker-News-Kommentare
  • Cool
    https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
    • Cool. Dann könnte man auch TinyURL dazu bringen, eine Website zu hosten
      https://tinyurl.com/dmk9e4m2
    • Ich habe daraus einen QR-Code gemacht, und das war wirklich keine große Sache. Ziemlich cool, dass man eine Website in einem QR-Code hosten kann
  • Falls es jemand nicht weiß: Mit einer data URI geht dasselbe auch
    data:text/html,My%20small%20website
    Look,%20it's%20real!
    Wenn man möchte, kann man mit einem data-URI-Generator auch Base64-Codierung verwenden. Der Vorteil von smolsite ist, dass man mit zip etwas mehr unterbringen kann als in einer data URI, und einige JavaScript-APIs funktionieren mit smolsite-URLs, aber nicht mit data URIs
    • Mit dieser Technik kann man einen einfachen Notizblock bauen
      data:text/html,
      Ich habe ihn in der Lesezeichenleiste liegen und nutze ihn dort
    • Ich schreibe das mal auf, bevor jemand eine smolsite baut, die auf dieser Domain einen Service Worker installiert und die Analytics-Daten aller anderen smolsites an den eigenen Server schickt
    • Mit Base64 + gzip speichere ich ungefähr 5 KB Text in einem einzigen Tweet: https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
    • Ob gut oder schlecht: Webbrowser und URL-Shortener blockieren das Öffnen und Weiterleiten von data URLs, daher sind sie hauptsächlich für Browser-Lesezeichen nützlich
      [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
  • Zum Thema, seltsame Dinge in URLs zu packen, gibt es auch den als Primzahl dargestellten Hund: https://geonnave.github.io/primg/#17976931348623159077293051...
    • Das ist erstaunlich. Allein schon auf die Idee zu kommen, ein Bild als binäre Darstellung einer Primzahl auszudrücken, ist beeindruckend
  • Meine Antwort steckt auch in der URL
    https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
  • Nett. Erinnert mich an nopaste, ein Pastebin, das Text in der URL mit LZMA komprimiert und Base64-codiert speichert
    [0] https://nopaste.boris.sh/
  • Diese Methode sendet den Inhalt zum Entpacken an den Server. Etwas komplexer könnte man die Zip-Datei in den Ankerteil packen und die Antwort Code liefern lassen, der sie clientseitig daraus entpackt

Allerdings wird der Anchor-Teil nicht an den Server übertragen, weshalb der Server schädliche Inhalte, die darüber übertragen werden, selbst dann nicht prüfen kann, wenn er das wollte.

  • Daran habe ich auch gedacht. Wenn ein Server für statische Inhalte ein Routing-Glob verwendet, das den gesamten Traffic auf dieselbe Webseite leitet, geht es auch ohne Anchor. Dadurch wird das Hosting wirklich simpel.
  • So etwas ist wirklich cool, und ich finde, genau so sollte sich Show HN ursprünglich anfühlen – statt als Marketinginstrument, mit dem andere Organisationen ihre Produkte pushen.
    • Diese Art von Beiträgen ist schön, aber man sollte auch bedenken, dass Y Combinator ein Startup-Inkubator ist. Dass Leute ihre eigenen Produkte zeigen, sollte bis zu einem gewissen Grad durchaus gefördert werden.
    • Ich sehe das nicht als Werbung. Viele kommen zu Hacker News, um zu sehen, woran Hacker gerade bauen, und ich auch.
      Alle Show HN-Beiträge, die ich bisher gesehen habe, waren interessant und haben mich motiviert, auch mein Projekt zu starten und so weit zu polieren, dass ich es hier zeigen kann. Es fühlt sich wirklich gut an, wenn jemand anderes meine Arbeit einreicht und ich dort darüber sprechen kann.
    • Hast du den Eindruck, dass originellere Show-HN-Beiträge von unternehmenslastigen Posts verdrängt werden?
    • Genau deshalb bekommen interessante Show HN-Beiträge Upvotes.
  • Ich hatte früher einmal die Idee, Borges’ Bibliothek von Babel auf diese Weise umzusetzen: den gesamten Text in die URL packen, mit einer ausgefeilteren Kodierung englische Wörter optimieren und dann ein Suchsystem hinzufügen, mit dem man den eigenen Namen, Textfragmente usw. finden kann.
    Natürlich würde man am Ende an die Längenbeschränkung von URLs stoßen, aber man könnte auch eine Ebene darüberlegen, auf der Kuratoren URL-Bündel zu größeren Texten zusammensetzen. Mit ein bisschen LLM-Magie ließen sich solche Bündel auch generieren; dann wäre es eine Bibliothek nicht nur aller Bücher, die bereits geschrieben wurden, sondern aller Bücher, die geschrieben werden könnten.
    Natürlich ist das ein Witz. Mir ist klar, dass es ähnlich ist wie zu sagen, dass im Notepad bereits alle existierenden Bücher enthalten sind und man sie nur selbst eintippen muss.
  • Ähnliche Arbeiten, die früher gepostet wurden:
    https://news.ycombinator.com/item?id=34312546
    https://news.ycombinator.com/item?id=2464213
    • Der Kommentar im ersten Link, dass Yahoo ein riesiges base64-kodiertes JSON-Objekt in die URL gepackt hat, erinnert mich an etwas Schreckliches, das ich bei einem früheren Arbeitgeber verbrochen habe.
      Um nicht die teure Event-Kalender-Komponente des Website-Anbieters bezahlen zu müssen, habe ich eine öffentliche Seite gebaut, die aus einem base64-kodierten einfachen JSON-Event-Schema in einem data-events-Attribut einen Kalender erzeugte. Die Mitarbeiter holten sich auf einer nicht öffentlichen Seite die bestehenden Event-Daten der öffentlichen Seite, um den Kalender-Builder vorzufüllen, bearbeiteten sie, erzeugten dann ein neues Codeschnipsel und fügten es in die öffentliche Seite ein.
      Im Grunde funktionierte es gut, aber am Ende haben wir vermutlich doch einfach für das Kalender-Add-on bezahlt.
    • Den HN-Link finde ich gerade nicht, aber hier ist ein Twitter-CDN-Projekt, das ich vor ein paar Jahren gepostet habe. Es nutzt base64+gzip Data-URIs.
      https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
  • Lustig, aber es könnte auch praktische Anwendungsfälle geben. Trotzdem sollten Hacker vorsichtig sein.
    • Mir fiel sofort ein, dass das eine hervorragende Methode wäre, um einem unerwarteten Gegenüber eine bösartige Payload zu schicken. Eine gute WAF würde das wohl als verdächtig blockieren, aber mit ein paar Tricks ließe sich das vermutlich umgehen.