3 puntos por GN⁺ 2023-09-07 | 1 comentarios | Compartir por WhatsApp
  • Un método de hosting en el que todos los archivos de un sitio web se comprimen en un ZIP y luego se codifican en Base64; al agregarlos después del dominio, la propia dirección se convierte en un sitio web completo
  • Una estructura que permite entregar el sitio con solo compartir la dirección, sin subir archivos por separado ni guardarlos en un servidor
  • Con una sola línea de comandos se realiza la compresión ZIP, la codificación Base64 y la generación de la URL; si no se cuenta con línea de comandos, también se admite arrastrar el archivo ZIP
  • El servidor conserva el contenido solo durante 15 minutos en RAM y luego lo descarta; se vuelve a procesar únicamente si se abre de nuevo el mismo enlace
  • Es open source como parte del proyecto de servidor web Lwan, y permite incluso imprimir en papel y escanear mediante código QR

Concepto de smolsite

  • Todo el sitio está incluido dentro de la URL, por lo que al compartir la dirección también se entrega el sitio en sí
  • Como en el ejemplo compuesto por dos archivos (index.html, mylogo.png), es posible agrupar varios archivos y convertirlos en una sola dirección

Cómo crear un smolsite

  • Comprimir todos los archivos en un archivo ZIP, codificarlos en Base64 y agregarlos después de https://smolsite.zip/
    • Comando de ejemplo:

FAQ

  • Si no tienes línea de comandos

    • Puedes compartirlo arrastrando el archivo ZIP a la barra morada de la parte inferior
  • Si se puede alojar en papel

    • Sí; al hacer clic en el código QR, se puede ver una versión imprimible y escaneable
  • Si es open source

  • Cómo se procesa el ZIP en el servidor

    • El contenido se procesa en el servidor y se conserva en RAM durante 15 minutos; después se elimina
    • Sin embargo, si alguien vuelve a abrir el mismo enlace, se procesa de nuevo
  • Medidas ante bombas ZIP (ZIP bomb)

    • Los datos desinflados se envían tal cual al navegador, sin modificaciones, y al no haber descompresión recursiva, ofrece cierto nivel de defensa
  • Si se puede descargar o eliminar el contenido

    • Se intenta en la medida de lo posible bloquear que se comparta la URL exacta mediante smolsite, pero como el contenido está dentro de la URL, no es posible eliminarlo por completo
      • Quien tenga el enlace puede extraer el contenido incluso sin smolsite

1 comentarios

 
GN⁺ 2023-09-07
Opiniones de Hacker News
  • Genial
    https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
    • Genial. Entonces también se podría hacer que TinyURL aloje un sitio web
      https://tinyurl.com/dmk9e4m2
    • Probé hacer un código QR con este enlace, y de verdad no fue nada del otro mundo. Es genial que se pueda alojar un sitio web en un código QR
  • Por si alguien no lo sabe, también se puede hacer lo mismo con un data URI
    data:text/html,My%20small%20website
    Look,%20it's%20real!
    Si quieres, también puedes codificar en base64 con un generador de data URI. La ventaja de smolsite es que, al ser zip, puedes meter un poco más que con un data URI, y algunas API de JavaScript funcionan en una URL de smolsite, pero no en un data URI
    • Con esta técnica se puede hacer un bloc de notas simple
      data:text/html,
      Lo uso dejándolo en la barra de marcadores
    • Lo dejo anotado antes de que alguien cree un smolsite que instale un service worker en ese dominio y envíe a su propio servidor los datos de analítica de todos los demás smolsite
    • Estoy usando Base64 + gzip para guardar aproximadamente 5 KB de texto en un solo tuit: https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
    • Para bien o para mal, los navegadores web y los acortadores de URL bloquean la apertura y redirección de data URL, así que son útiles principalmente para marcadores del navegador
      [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
  • Sobre el tema de meter cosas raras en una URL, también está el perro expresado como un número primo: https://geonnave.github.io/primg/#17976931348623159077293051...
    • Esto es asombroso. Solo el hecho de haber pensado en representar una imagen como la representación binaria de un número primo ya es impresionante
  • Mi respuesta también está dentro de la URL
    https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
  • Bueno. Me recuerda a nopaste, un pastebin que guarda texto dentro de la URL comprimido con LZMA y codificado en base64
    [0] https://nopaste.boris.sh/
  • Este método envía el contenido al servidor para descomprimirlo. Una variante un poco más compleja sería poner el zip en la parte de ancla y hacer que la respuesta proporcione código que lo descomprima desde ahí del lado del cliente

Sin embargo, como la parte del ancla no se envía al servidor, aunque el servidor quisiera, no podría inspeccionar el contenido dañino que se transmite por ese medio.

  • Pensé lo mismo. Si un servidor de contenido estático usa un glob de ruteo que envía todo el tráfico a la misma página web, se puede hacer incluso sin anclas. Así el hosting se vuelve realmente simple.
  • Este tipo de cosas es realmente genial, y creo que Show HN debería sentirse originalmente así, en vez de ser un recurso de marketing para que otras organizaciones impulsen sus productos.
    • Este tipo de cosas también está bien, pero hay que tener en cuenta que Y Combinator es una incubadora de startups. Hasta cierto punto, me parece correcto que se anime a la gente a mostrar sus productos.
    • No lo veo como publicidad. Mucha gente viene a Hacker News para ver qué están construyendo los hackers, y yo también vengo por eso.
      Todos los posts de Show HN que he visto hasta ahora me parecieron interesantes, y me motivaron a empezar mi propio proyecto y pulirlo para poder mostrarlo aquí. Se siente realmente bien cuando otra persona envía mi trabajo y puedo conversar ahí.
    • ¿Te da la impresión de que los Show HN más novedosos quedan desplazados por posts más corporativos?
    • Por eso los Show HN interesantes reciben upvotes.
  • Hace tiempo se me ocurrió la idea de implementar de esta manera la Biblioteca de Babel de Borges. Sería poner todo el texto en la URL, optimizar las palabras en inglés con una codificación más sofisticada y luego agregar un sistema de búsqueda para encontrar tu nombre, fragmentos de texto, etc.
    Claro que al final chocaría con el límite de longitud de las URL, pero también se podría montar una capa en la que un curador combine conjuntos de URLs para formar textos más grandes. Incluso se podría agregar un poco de magia de LLM para generar esos conjuntos, y entonces sería una biblioteca que contenga no solo todos los libros que ya se escribieron, sino todos los libros que podrían escribirse.
    Claro, es broma. Sé que es parecido a decir que el Bloc de notas ya contiene todos los libros que existen y que solo hay que escribirlos a mano.
  • Trabajos similares publicados antes:
    https://news.ycombinator.com/item?id=34312546
    https://news.ycombinator.com/item?id=2464213
    • Al ver el comentario del primer enlace sobre que Yahoo metía en la URL un enorme objeto JSON codificado en base64, me acordé de algo terrible que hice en un trabajo anterior.
      Para evitar pagarle al proveedor del sitio web por un módulo caro de calendario de eventos, programé una página pública que generaba un calendario poniendo un esquema simple de eventos en JSON codificado en base64 dentro del atributo data-events. El personal lo usaba desde una página privada: traían los datos de eventos existentes de la página pública para precargar el constructor de calendarios, los editaban y luego extraían un nuevo fragmento de código para pegarlo en la página pública.
      En general funcionaba bien, pero creo que al final simplemente pagamos el add-on de calendario.
    • No encuentro ahora el enlace de HN, pero aquí está un proyecto de Twitter CDN que publiqué hace unos años. Usa data URI con base64+gzip.
      https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
  • Es gracioso, pero también podría tener usos prácticos. Aun así, los hackers deberían tener cuidado.
    • De inmediato se me ocurrió una excelente forma de enviar un payload malicioso a un destinatario inesperado. Un buen WAF lo bloquearía por sospechoso, pero parece que podría evadirse con algunos trucos.