26 pontos por GN⁺ 2024-03-25 | 3 comentários | Compartilhar no WhatsApp
  • Empacota páginas da web em um único arquivo HTML
  • Diferentemente do recurso tradicional de “salvar página”, o monolith salva não apenas o documento de destino, mas também inclui de uma vez só CSS, imagens e assets JavaScript
  • Incorpora todos os assets como Data URLs, permitindo renderizar a página exatamente como na internet mesmo sem conexão de rede
  • Escrito em Rust, pode ser instalado em macOS/Windows/Linux: cargo/brew/choco/snap/apk..

Como usar

Opções

  • -a: excluir fontes de áudio
  • -b: usar base URL personalizada
  • -B: impedir a busca de assets em domínios específicos
  • -c: excluir CSS
  • -C: ler cookies de file
  • -d: permitir a busca de assets apenas nos domain(s) especificados
  • -e: ignorar erros de rede
  • -E: salvar o documento com encoding personalizado
  • -f: omitir frames
  • -F: excluir web fonts
  • -h: exibir informações de ajuda
  • -i: remover imagens
  • -I: isolar o documento
  • -j: excluir JavaScript
  • -k: aceitar certificados X.509 (TLS) inválidos
  • -M: não adicionar informações de timestamp e URL
  • -n: extrair o conteúdo de elementos NOSCRIPT
  • -o: gravar a saída em file (use “-” para STDOUT)
  • -s: modo silencioso
  • -t: ajustar o network request timeout
  • -u: fornecer User-Agent personalizado
  • -v: excluir vídeo

Whitelist e blacklist de domínios

  • Com as opções -d e -B, é possível controlar os domínios dos quais os assets podem ser buscados.

Conteúdo dinâmico

  • O Monolith não possui um motor JavaScript, então sites que buscam e exibem dados após o carregamento inicial podem exigir ferramentas adicionais.
  • Por exemplo, é possível usar o Chromium (Chrome) para atuar como um pré-processador dessas páginas.

Configuração de proxy

  • É necessário definir as variáveis de ambiente https_proxy, http_proxy, no_proxy.

Licença

  • Creative Commons Zero v1.0 Universal
  • O autor dedica ao domínio público, em todo o mundo, todos os direitos autorais e direitos conexos deste software, dentro do limite permitido por lei

Opinião do GN⁺

  • O monolith é uma ferramenta eficaz para preservar páginas da web offline exatamente como o original, podendo ser útil para pesquisadores e desenvolvedores.
  • A ferramenta pode ser especialmente atraente para quem tem interesse em arquivamento da web ou preservação de conteúdo, oferecendo a capacidade de revisar páginas mesmo em ambientes sem internet.
  • De uma perspectiva crítica, há a limitação de não conseguir lidar com conteúdo carregado dinamicamente, o que pode causar o incômodo de o usuário precisar recorrer a ferramentas adicionais.
  • Outros projetos com funcionalidade semelhante incluem HTTrack e Wget, que também podem ser usados para salvar sites offline.
  • Antes de usar o monolith, é importante verificar os direitos autorais e as permissões de uso da página que se deseja salvar, tomando cuidado para que o objetivo de uso do conteúdo salvo não gere problemas legais.

3 comentários

 
yangeok 2024-04-04

Era irritante salvar como arquivo empacotado, então se der para salvar em 1 arquivo só, ótimo haha. Parece que vai ser útil para arquivar sites estáticos e subir no servidor web ^^

 
secret3056 2024-03-28

Fiz um arquivamento de Bicycle - tudo sobre o princípio de funcionamento de uma bicicleta.
Havia uma extensão de navegador semelhante que eu usava antes, SingleFile - ferramenta que salva uma página da web em um único arquivo HTML,

mas nenhuma das duas ferramentas executou o WebGL corretamente.
O monolith nem chegou a baixar o modelo,
e o SingleFile baixa o modelo e renderiza até a primeira imagem, mas não realiza aquele comportamento interativo.

O tamanho de cada saída é de 2 MB e 9 MB. Ao fazer um hard refresh nas ferramentas de desenvolvedor, são baixados 3 MB.

chrome.exe `  
--headless `  
--incognito `  
--virtual-time-budget=50000 `  
--dump-dom https://ciechanow.ski/bicycle/ | monolith `  
- `  
-I `  
-b https://ciechanow.ski/bicycle/ `  
-o bicycle.html  
 
GN⁺ 2024-03-25

Comentários do Hacker News

  • Aprendeu no README como obter o arquivo HTML de uma página web no macOS usando o Google Chrome depois que o JavaScript é executado. Pretende registrar os detalhes em um TIL, e sua própria ferramenta, shot-scraper, que usa Playwright Chromium, também oferece funcionalidade semelhante.

    • /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.html
  • Prefere distribuir páginas de arquivo único sempre que possível, pelo princípio de que deve ser possível ver tudo em "ver código-fonte". Essas páginas são autocontidas e podem ser usadas offline ou reenviadas. Criou um sistema de build simples para escrever jogos em TypeScript e compilá-los em um único arquivo HTML. Quando os navegadores passarem a suportar a sintaxe de TypeScript, não haverá mais necessidade de compilador nem etapa de build.

  • Como isso se compara ao SingleFile?

  • Usa com frequência serviços para salvar páginas da web para ler depois, mas muitas vezes, quando realmente vai ler, a página já não existe mais. Está considerando que migrar para uma versão de arquivamento offline pode ser uma opção melhor.

  • Pergunta sobre como restaurar um site inteiro a partir do Wayback Machine. O banco de dados de um site querido foi apagado, mas todo o conteúdo existe no Internet Archive. Parece que será necessário scraping manual e correções de URLs de CSS usando Python.

  • Escreveu algo parecido alguns anos atrás e o usa principalmente ao gerar HTML em programas Go. Usa links para folhas de estilo externas e JavaScript, e depois processa isso em um único arquivo HTML.

  • Opinião de que seria bom haver suporte a uma função que siga links até uma profundidade especificada. Menciona algo semelhante ao Httrack.

  • Acha a ferramenta interessante, mas a vê como uma gambiarra para resolver problemas na forma como os navegadores lidam com páginas da web. Defende que, em vez de o navegador salvar a página como um arquivo blah.html e uma pasta blah_files, ele deveria agrupar os dois em uma única pasta para que fosse fácil mover e copiar.

  • Explicação de como usar wget para baixar uma página da web e todos os seus recursos, com link para a documentação.

  • Fornece um link relacionado para "Show HN: CLI tool for saving web pages as a single file", publicado no Hacker News em agosto de 2019.