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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!



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

Удивительно, что на Хабре ещё не было статей про ArchiveBox — продвинутый архиватор сайтов с огромным количеством поддерживаемых форматов и интерфейсов. Первая бета вышла в 2017 году, тогда это был проект по сохранению закладок Bookmark Archiver. Получив поддержку и перелопатив горы кода, Ник Свитинг переделал инструмент под хранение вообще всего интересного пользователю контента, переименовал проект и собрал 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 в деле.

Установка


Докер-установка подробно описана в вики, мы же рассмотрим классический вариант для линуксов (для голой системы, ведь вы можете накатить 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 позволит создать админа до старта сервера. Логинимся в дашборд и добавляем первый сайт:


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

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



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



Заключение


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



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


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

Источник: https://habr.com/ru/company/vdsina/blog/550180/


Интересные статьи

Интересные статьи

Кожа это не только самый большой орган нашего тела, но и самая большая сенсорная система, ежесекундно собирающая информацию о внешних раздражителях и уровнях их воздействия на наш...
Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Недавно у нас с другом зашел разговор о карточных играх. Он сказал, что умеет играть только в покер, но и то давно этого не делал, потому что забыл все комбинации. Вот и поговорили… Я вспомнил,...
Все школьники знают, что планета Земля разделена на три (или четыре) больших слоя: кора, мантия и ядро. В целом это верно, хотя это обобщение не берет в расчет несколько дополнительных слоев, опр...
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...