Архивация веб-сайтов позволяет сохранить информацию от исчезновения или блокировки. Вы можете создавать локальные копии сайтов разными способами, включая утилиты wget и httrack. При этом появляется несколько сложностей при дальнейшем хранении и открытии копий сайтов:
- Веб-сайт может состоять из множества папок и небольших файлов. Удобнее упаковать всё это в единый архив.
- Часть ссылок внутри сайта может быть указана от корня сайта. Нормальный просмотр оффлайн возможен через локальный веб-сервер для статических файлов, что-то типа
python3 -m http.server 8080илиphp -S localhost:8080.
Как вариант решения — эта небольшая утилита, которая:
- Запускает веб-сервер на указанном порту (по умолчанию
8080) - При запросе корня каталога выдаёт индексный файл из него (по умолчанию
index.html) - Если в корне архива обнаружится единственный каталог, то перемещает корень веб-сайта внутрь этого каталога
- Если индексный файл не найден, то выводит перечень имеющихся HTML-файлов
Итак, делаем копию сайта:
wget -mpEk https://gobyexample.com/Упаковываем в zip-архив:
zip -r gobyexample.zip gobyexample.com/Запускаем оффлайн на любой системе, хоть даже на Android (через Termux):
$ box-server gobyexample.zip
2025/08/04 12:34:00 Server is starting on http://localhost:8080
2025/08/04 12:34:56 GET /
2025/08/04 12:34:56 --> text/html 7257 bytes
2025/08/04 12:34:56 GET /site.css
2025/08/04 12:34:56 --> text/css 5589 bytes
2025/08/04 12:34:56 GET /favicon.ico
2025/08/04 12:34:56 not found: /favicon.icoПервый вариант названия утилиты появился из подобия: раз веб-сайты раздаются через веб-сервер, значит zip-файлы с сайтами внутри можно считать zip-сайтами и раздавать через zip-server. Этот вариант сомнителен из-за опасной близости с утилитами zip, да и для автодополнения в bash необходимо 4 символа:
$ zip<TAB><TAB>
zip zipcloak zipdetails zipgrep zipinfo zipnote zipsplit Бережно хранимый архив с сайтом внутри можно считать цифровой шкатулкой (box) и для открытия использовать box-server. Для автодополнения в bash достаточно 3 символа:
$ box-server
Usage: box-server website.zip
Options:
-index string
file for root path (default "index.html")
-port int
listen port (default 8080)Я не нашёл готовых решений и поэтому сочинил этот небольшой проект. Всё же есть несколько интересных работ по данной теме:
Ровно та же самая задача! Но я ничего не смыслю в Scheme, да и репозиторий заброшен:
Possible usecase: You've archived a website using wget and zipped it so it wouldn't clutter your harddrive, but you still want to browse your archive.
Крайне интересная идея! Достаточно взять исполняемый COM-файл веб-сервера, который также является zip-архивом и добавить к нему командой zip каталог с файлами сайта.
Basic idea is if you want to build a web app that runs anywhere, then you download the redbean.com file, put your .html and .lua files inside it using the zip command, and you've got a hermetic app you deploy and share.