3 pontos por GN⁺ 2023-09-07 | 1 comentários | Compartilhar no WhatsApp
  • Um modelo de hospedagem em que todos os arquivos do site são compactados em ZIP e depois codificados em Base64 para serem anexados após o domínio, fazendo com que o próprio endereço se torne um site completo
  • Estrutura que permite entregar o site apenas compartilhando o endereço, sem upload separado de arquivos nem armazenamento no servidor
  • Com uma única linha de comando, faz a compactação em ZIP, a codificação em Base64 e a geração da URL; se não houver linha de comando, também é possível arrastar o arquivo ZIP
  • O servidor mantém o conteúdo apenas na RAM por 15 minutos e depois o descarta; ele só é reprocessado quando o mesmo link é aberto novamente
  • Faz parte do projeto de servidor web Lwan e é open source, com possibilidade até de imprimir em papel e escanear por QR code

Conceito do smolsite

  • O site inteiro fica contido dentro da URL, então ao compartilhar o endereço, o próprio site é enviado junto
  • Como no exemplo composto por dois arquivos (index.html, mylogo.png), é possível agrupar vários arquivos e convertê-los em um único endereço

Como criar um smolsite

  • Compacte todos os arquivos em um arquivo ZIP e codifique em Base64, depois anexe o resultado após https://smolsite.zip/
    • Comando de exemplo:

FAQ

  • Se você não tiver linha de comando

    • É possível compartilhar arrastando o arquivo ZIP para a barra roxa na parte inferior
  • Dá para hospedar em papel?

    • Sim; ao clicar no QR code, é possível ver uma versão que pode ser impressa e escaneada
  • É open source?

  • Como o ZIP é processado no servidor

    • O conteúdo é processado no servidor e mantido na RAM por 15 minutos, sendo removido depois
    • Porém, se alguém abrir novamente o mesmo link, ele será reprocessado
  • Como lida com ZIP bomb

    • Os dados deflacionados são enviados diretamente ao navegador sem modificação, e como não há descompressão recursiva, existe certa proteção
  • É possível baixar ou apagar o conteúdo?

    • O smolsite tenta ao máximo impedir o compartilhamento da URL exata, mas como o conteúdo está dentro da URL, a remoção completa é impossível
      • Quem tiver o link consegue extrair o conteúdo mesmo sem usar o smolsite

1 comentários

 
GN⁺ 2023-09-07
Opiniões do Hacker News
  • Legal
    https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
    • Legal. Então também dá para fazer o TinyURL hospedar um site
      https://tinyurl.com/dmk9e4m2
    • Fiz um QR code com esse link e realmente não foi nada demais. É legal poder hospedar um site em um QR code
  • Para quem não souber, dá para fazer a mesma coisa com um data URI
    data:text/html,My%20small%20website
    Look,%20it's%20real!
    Se quiser, também dá para codificar em base64 com um gerador de data URI. A vantagem do smolsite é que, por ser zip, dá para colocar um pouco mais do que em um data URI, e algumas JavaScript APIs funcionam em URLs do smolsite, mas não em data URIs
    • Dá para criar um bloco de notas simples com essa técnica
      data:text/html,
      Eu deixo na barra de favoritos e uso assim
    • Vou deixar registrado antes que alguém crie um smolsite que instale um service worker nesse domínio e envie os dados de analytics de todos os outros smolsites para o próprio servidor
    • Estou usando Base64 + gzip para armazenar cerca de 5 KB de texto em um único tweet: https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
    • Para o bem ou para o mal, navegadores e encurtadores de URL bloqueiam a abertura e o redirecionamento de data URLs, então isso é útil principalmente para favoritos do navegador
      [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
  • No tema de colocar coisas estranhas em URLs, também há o cachorro representado como um número decimal: https://geonnave.github.io/primg/#17976931348623159077293051...
    • Isso é surpreendente. Só o fato de terem pensado em representar uma imagem como a representação binária de um número decimal já é incrível
  • Minha resposta também está dentro da URL
    https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
  • Gostei. Isso me lembra o nopaste, um pastebin que comprime o texto dentro da URL com LZMA e o armazena codificado em base64
    [0] https://nopaste.boris.sh/
  • Esse método envia o conteúdo para o servidor para descompactação. Uma abordagem um pouco mais complexa seria colocar o zip na parte de âncora e fazer a resposta fornecer código para descompactá-lo do lado do cliente

Só que, como a parte da âncora não é enviada ao servidor, mesmo que ele quisesse, o servidor não conseguiria inspecionar o conteúdo nocivo transmitido por esse meio

  • Pensei a mesma coisa. Se um servidor de conteúdo estático usar um glob de roteamento que envia todo o tráfego para a mesma página web, dá para fazer isso sem âncora. Assim, a hospedagem fica realmente simples
  • Coisas assim são muito legais, e acho que o Show HN deveria ter originalmente esse espírito, em vez de ser um instrumento de marketing para outras organizações empurrarem produtos
    • Esse tipo também é bom, mas é preciso levar em conta que a Y Combinator é uma incubadora de startups. Até certo ponto, parece correto incentivar as pessoas a mostrarem seus produtos
    • Não vejo isso como propaganda. Muita gente vem ao Hacker News para ver o que os hackers estão construindo, e eu também venho por isso
      Todos os posts Show HN que vi até agora foram interessantes, e me motivaram a também começar meu projeto e lapidá-lo para poder mostrá-lo aqui. É muito bom quando outra pessoa submete o meu trabalho e eu posso conversar sobre ele ali
    • Você tem a impressão de que Show HNs mais inovadores acabam ficando para trás por causa de posts com perfil corporativo?
    • Por isso os Show HN interessantes recebem upvotes
  • Há um tempo tive a ideia de implementar a Biblioteca de Babel, do Borges, desse jeito. Colocar todo o texto na URL, otimizar palavras em inglês com uma codificação mais sofisticada e depois acoplar um sistema de busca para encontrar o próprio nome, trechos de texto etc.
    Claro que, no fim, esbarraria no limite de tamanho da URL, mas também daria para colocar uma camada em que curadores combinassem conjuntos de URLs para formar textos maiores. Com um pouco de mágica de LLM, também seria possível fazer esses conjuntos serem gerados, e aí seria uma biblioteca contendo não só todos os livros já escritos, mas todos os livros que poderiam ser escritos
    Claro que é piada. Sei que é parecido com dizer que todos os livros que existem já estão no Bloco de Notas, basta digitá-los você mesmo
  • Trabalhos parecidos que já apareceram antes
    https://news.ycombinator.com/item?id=34312546
    https://news.ycombinator.com/item?id=2464213
    • Ao ver o comentário no primeiro link sobre o Yahoo ter colocado um objeto JSON codificado em base64 gigantesco na URL, lembrei de uma coisa horrível que fiz no meu antigo emprego
      Para evitar pagar ao fornecedor do site por um módulo caro de calendário de eventos, codifiquei uma página pública que criava um calendário colocando, no atributo data-events, um esquema simples de eventos em JSON codificado em base64. Os funcionários usavam uma página privada para buscar os dados de eventos existentes da página pública, pré-preencher um construtor de calendário, editar e depois extrair um novo trecho de código para colar na página pública
      Basicamente funcionava bem, mas acho que no fim acabamos pagando pelo add-on de calendário mesmo
    • Não consigo encontrar agora o link do HN, mas aqui está um projeto de Twitter CDN que publiquei alguns anos atrás. É no esquema de URI de dados com base64+gzip
      https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
  • É engraçado, mas pode ter usos práticos. Ainda assim, hackers precisam tomar cuidado
    • Uma ótima forma de enviar um payload malicioso para alguém que não espera isso me veio à cabeça na hora. Um bom WAF provavelmente bloquearia por parecer suspeito, mas imagino que dê para contornar com alguns truques