- PVSM.RU - https://www.pvsm.ru -

Персональный интернет-архив без боли

Персональный интернет-архив без боли - 1

Каждый веб-разработчик, да и многие пользователи рано или поздно сталкиваются с Internet Archive и необходимостью сохранить или восстановить вид важного им сайта в определённое время. С каждым годом всё очевиднее, что поговорка «интернет помнит всё» ошибочна — форумы закрываются, старые сайты тихо исчезают, информация пропадает без следа (вот [1] хорошая статья по теме). При этом пока не существует общепринятого способа на лету сохранять важный контент без лишних телодвижений (представьте, что будет с серверами archive.org [2], если, скажем, в следующем обновлении Chrome будет при загрузке страницы отправлять адрес на архивацию). Спасение утопающих — дело рук самих утопающих, поэтому в этой статье мы разберём инструмент, позволяющий не просто сохранять нужные сайты, но и встраивать этот процесс в повседневную работу.

Удивительно, что на Хабре ещё не было статей про ArchiveBox — продвинутый архиватор сайтов с огромным количеством поддерживаемых форматов и интерфейсов. Первая бета вышла в 2017 году, тогда это был проект по сохранению закладок Bookmark Archiver. Получив поддержку и перелопатив горы кода, Ник Свитинг [3] переделал инструмент под хранение вообще всего интересного пользователю контента, переименовал проект и собрал 8k звёзд и десятки контрибьюторов на гитхабе благодаря непрерывному улучшению кода и фич в течение нескольких лет. Вообще ArchiveBox — пример того самого хрестоматийного open-source проекта, от которого у авторов горят глаза и простаивают крутые офферы.

Фичи

  • Список сайтов можно подать на вход кучей разных способов (TXT, RSS, XML, JSON, CSV, SQL, HTML, Markdown, и т.д.), но самое интересное это импорт из всех основных браузеров (закладки, история) и «закладочных» сервисов (Pocket, Pinboard, Instapaper, Reddit Saved, OneTab и другие).
  • Хранение данных в HTML, JSON, PDF, PNG, и WARC — без самописных, проприетарных или новомодных форматов. При этом доступны и необычные методы экспорта, вроде извлечения текста (как в режиме Reader в браузерах) или Git-репозитория для скачанного со страницы кода.
  • Взаимодействие через терминал, веб-интерфейс, Python API, REST API и десктопное приложение (последние два варианта пока в альфе) на всех основных ОС (на винде нужен Docker или WSL)
  • Архивирование по расписанию (в сочетании с использованием истории браузера получается цепочка автосохранения всех посещённых сайтов)
  • Опционально — отправка URL на archive.org (чтобы иметь бэкап не только локально, но и на проверенных серверах)
  • Проект полностью опенсорсный, все надстройки опциональны и доустанавливаются в виде модулей. При отключенном экспорте в Internet Archive вообще все данные остаются на локальной машине, а при использовании Headless Chromium вместо Chrome можно обеспечить себе полную приватность.
  • Запланировано: использование JS-скриптов во время архивирования, для вырезания рекламы/попапов/разворачивания веток комментариев прямо на лету.
  • Уже работает, но нестабильно: сохранение контента за логином/пейволлом по кукам.

Впечатляет, да? Давайте попробуем ArchiveBox в деле.

Установка

Докер-установка подробно описана в вики [4], мы же рассмотрим классический вариант для линуксов (для голой системы, ведь вы можете накатить ArchiveBox на сервер чтобы не захламлять рабочую машину):

Вынесем работу с архивами под отдельного пользователя (ArchiveBox всё равно не запустится из-под рута, чтобы уберечь неопытного пользователя от фатальных ошибок)

  adduser archive
  usermod -aG sudo archive
  su - archive

Установим pip и собственно ArchiveBox:

  sudo apt-get update
  sudo apt-get install python3-pip
  pip3 install archivebox

Зависимости можно доустановить вручную, но для первого знакомства проще взять готовый скрипт, который накатит их все, а потом уже решить, какие из них необходимы:

  curl https://raw.githubusercontent.com/pirate/ArchiveBox/master/bin/setup.sh | sh

Альтернатива:

  sudo apt install -y git wget curl youtube-dl nodejs npm ripgrep chromium-browser
  npm i -g npm
  pip3 install --upgrade pip setuptools
  npm install -g 'git+https://github.com/ArchiveBox/ArchiveBox.git' 

Для инициализации нужна пустая директория в любом месте:

  mkdir box && cd box
  archivebox init

Готово. Теперь можно продолжить работу в терминале, но проще работать в веб-интерфейсе:

  archivebox server --createsuperuser 0.0.0.0:8000
  # адрес и порты, конечно, можно заменить на произвольные

Флаг --createsuperuser позволит создать админа до старта сервера. Логинимся в дашборд и добавляем первый сайт:

Персональный интернет-архив без боли - 2
На скриншоте выбраны все возможные методы архивирования (синее выделение)

В это время в терминале:

Персональный интернет-архив без боли - 3

По окончании процесса станет доступен снапшот, который можно посмотреть превьюхой для каждого из визуальных методов, открыть отдельно или изучить список скачанных файлов:

Персональный интернет-архив без боли - 4

Заключение

Разбираться во всех функциях и возможностях ArchiveBox придётся долго, но учитывая готовые и будущие интеграции с API, можно уже бежать его изучать, потому что применять его можно будет почти из любой инфраструктуры. Очень приятно, что проект активно развивается и уже в достаточной мере оброс сообществом, чтобы разработка и багфиксы не прекращались даже на неделю. Учитывая как далеко он ушел от своих конкурентов, при большей ориентированности на рядового пользователя ArchiveBox может стать очень успешным и полезным приложением.


На правах рекламы

Создание VDS [5] с нужными вам параметрами в течение минуты, в том числе для создания и хранения архивов большого объёма — до 4000 ГБ!

Автор: Mikhail

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/363102

Ссылки в тексте:

[1] вот: https://digiday.com/media/wtf-link-rot/

[2] с серверами archive.org: https://habr.com/ru/company/vdsina/blog/549520/

[3] Ник Свитинг: https://sweeting.me/

[4] в вики: https://github.com/ArchiveBox/ArchiveBox/wiki/Docker

[5] VDS: https://vdsina.ru/cloud-servers?partner=habr306

[6] Источник: https://habr.com/ru/post/550180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=550180