Blog Linux Avante

Salvar páginas da web como arquivos HTML únicos para uso offline com Monolith (console)

18 de dezembro de 2019

Monolith é uma ferramenta de linha de comando para salvar qualquer página da web como um único arquivo HTML que contém tudo o que é necessário para renderizar a página da web localmente, sem a necessidade de uma conexão ativa com a Internet.

Use isso para salvar páginas da web contendo documentação, artigos wiki e qualquer outra coisa que lhe interesse, para uso local/offline. Como as páginas da web são salvas em HTML simples, use uma ferramenta que pode pesquisar em arquivos para encontrar rapidamente a página da web que você está procurando.

Ao contrário da opção regular "Salvar página como" (ou Ctrl + s) fornecida pelos navegadores da web para salvar páginas da web em seu computador, que salva ativos da página da web em uma pasta ao lado da página da web salva, esta ferramenta de linha de comando recupera os ativos da página da web e converte-os em URLs de dados base64, usando isso no documento em vez de URLs regulares. Como resultado, ativos de página como Javascript, CSS ou imagens são incorporados ao HTML da página, então tudo que você precisa é um navegador da web para acessar a página da web salva localmente.

A ferramenta também oferece 2 opções úteis: -i para remover imagens de páginas da web salvas e -j para excluir JavaScript.

Monolith inicialmente usava Node.js, mas foi muito recentemente (cerca de 11 horas antes da publicação deste artigo) reescrito em Rust. Atualmente, funciona bem para páginas básicas, mas ainda há algumas coisas que precisam ser corrigidas. Por exemplo, a incorporação de importações CSS e fontes da web não é suportada atualmente, embora pareça que o desenvolvedor planeja implementar isso em breve. Com o Monolith 2.1.0, as importações CSS e as fontes da web são suportadas, portanto, esses elementos são incorporados ao arquivo HTML salvo.

Salvar páginas da web que requerem autenticação não funciona no momento. Além disso, salvar vídeos incorporados não funciona, mas isso não seria exatamente viável de qualquer maneira, já que incorporar um vídeo como um URL de dados resultaria em um arquivo HTML muito grande, e se você quiser editar o arquivo HTML, seria bem ruim.

Também é importante notar que o Monolith salva o que está em uma página da web quando é carregada, por isso não funcionará bem com sites que implementam rolagem infinita, especialmente porque isso geralmente é implementado de forma diferente dependendo do site (em meu teste, apenas o artigo inicial foi salvo em tais casos). Ele também não parece lidar muito bem com páginas da web que usam o carregamento lento.

A ideia de salvar qualquer página da web como um único arquivo com todos os ativos incorporados não é nova e existem algumas alternativas por aí. Por exemplo, o navegador Safari permite que você salve páginas individuais da web para visualização offline, armazenando todos os elementos da página em um arquivo da web (extensão de arquivo .webarchive). Também existe o MHTML, um formato de arquivo da web que salva páginas da web em um único arquivo.

Mas eles têm algumas limitações, como exigir o uso de um navegador específico ou cliente de terceiros para salvá-los de visualização. Por exemplo, você só pode salvar e visualizar arquivos .webarchive usando o navegador Safari e algumas soluções de terceiros. Quanto ao MHTML, não é mais compatível com o Firefox, e o Google Chrome recentemente removeu o sinalizador #save-page-as-mhtml personalizado que anteriormente permitia salvar páginas da web como MHTML (pode haver algumas extensões que trazem de volta essa funcionalidade, eu não verifiquei).

Como o Monolith salva páginas da web como arquivos HTML regulares, você pode usar qualquer navegador da web para visualizá-los. Isso significa que você não depende de soluções de terceiros e não precisa de navegadores da web para continuar a oferecer suporte a um formato de arquivo da web específico, tornando suas páginas da web salvas no futuro.

Instalação e uso do Monolith Linux

Para instalar o Monolith, usaremos o Cargo, o sistema de construção e gerenciador de pacotes do Rust. Você também precisará instalar o OpenSSL (devel) para poder compilar o Monolith. Instale-os no Linux usando:

Debian/Ubuntu/Linux Mint/Pop!_OS, etc

Comandos para usar no terminal

sudo apt install cargo libssl-dev

Fedora

Comandos para usar no terminal

sudo dnf install rust-cargo openssl-devel

Arch Linux, Manjaro

Comandos para usar no terminal

sudo pacman -S rust openssl

openSUSE

Comandos para usar no terminal

sudo zypper install cargo libopenssl-devel

Solus OS

Comandos para usar no terminal

sudo eopkg install cargo openssl-devel

Agora você pode obter o fonte do Monolith do Git e instalá-lo:

Comandos para usar no terminal

git clone https://github.com/Y2Z/monolith

cd monolith

cargo install

O binário Monolith é instalado em ~/.cargo/bin, que não está em seu $PATH por padrão. Você pode adicioná-lo ao seu PATH (assim você pode digitar "monolith" sem seu caminho completo para usá-lo) adicionando export PATH="$PATH:$HOME/.cargo/bin ao seu arquivo ~/.bashrc ou ~/.zsh (dependendo do que você está usando). Você pode fazer isso e obter ~/.bashrc/~/.zsh usando:

  • para Bash:

Comandos para usar no terminal

echo "export PATH="$PATH:$HOME/.cargo/bin"" >> ~/.bashrc

. ~/.bashrc

  • para Zsh:

Comandos para usar no terminal

echo "export PATH="$PATH:$HOME/.cargo/bin"" >> ~/.zshrc

. ~/.zshrc

Certifique-se de executar o comando "echo" apenas uma vez, porque adiciona export PATH="$PATH:$HOME/.cargo/bin a ~/.bashrc/~/.zsh cada vez que você o executa.

Agora você pode começar a usar o Monolith para salvar páginas da web com seus recursos incorporados em um único arquivo HTML. Por exemplo, vamos salvar a página da web do Monolith GitHub (https://github.com/Y2Z/monolith) localmente, em um arquivo chamado monolith.html:

Comandos para usar no terminal

monolith https://github.com/Y2Z/monolith > monolith.html

Quer remover o JavaScript da página? Adicione -j, assim:

Comandos para usar no terminal

monolith -j https://github.com/Y2Z/monolith > monolith.html

Da mesma forma, use -i para remover imagens da página da web salva.

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.