Как показала история, сеть из миллиардов связанных между собой документов — очень хрупкая и эфемерная система. Странички живут недолго. Если нашли интересную страницу, сайт или видео — нельзя просто сделать закладку и надеяться, что контент по ссылке останется доступен в будущем. Не останется. Информация исчезнет, ссылки изменятся, домены сменят владельцев, статьи на Хабре спрячут в черновики. У каждой страницы свой срок жизни. Ничто не вечно под луной, и ничего с этим не поделать.

К счастью, у нас есть инструменты, чтобы сохранить информацию на десятилетия. Свой персональный архив, полностью под контролем, со всеми сайтами и актуальными страницами. Отсюда никто ничего не удалит без вашего ведома, никогда.

Вымирание ссылок


Вымирание ссылок — известный феномен. У большинства СМИ и других организаций нет политики долговременного сохранения информации. Они просто публикуют веб-страницы — и забывают про них. На старые страницы всем плевать, сменят они адреса или исчезнут навсегда. Неудивительно, что именно так и происходит.

Анализ внешних ссылок New York Times с 1996 по 2019 годы показал вымирание ссылок на уровне примерно 6% в год. По итогу с 1996 года пропало около 70% веб-страниц.



Проверка ссылок в научных статьях показала вымирание 23—53% в статьях с 1993 по 1999 годы.



Проверка проводилась в 2001 году. Наверняка сейчас, двадцать лет спустя, в тех статьях осталось ещё меньше живых ссылок. В 2016 году другая проверка источников в научных статьях с 1997 по 2012 годы показала, что по 75% ссылкам контент исчез или изменился, а снапшоты в веб-архивах остались только для трети пропавших страниц.

Для решения этой проблемы был создан Архив интернета и знаменитая Машина времени (Wayback Machine). Мотивация такая, что мы обязаны сохранить существующий контент для будущих поколений, иначе он безвозвратно исчезнет.

Но в Архив интернета попадают далеко не все страницы. В кэш Google попадает больше, но там определённый срок хранения. И никакой гарантии, что сохранится именно нужная информация. Так что лучше взять дело в свои руки — и создать собственный архив.

Инструменты для веб-архивирования


Существует ряд опенсорсных программ для веб-архивирования. Возможно, самый полный список таких проектов собран здесь. Есть также таблица со сравнением функциональности инструментов. Вот небольшой список некоторых проектов:

Архивирование целых сайтов


  • Archive-It: курируемая служба веб-архивирования. Предлагает годовую подписку на доступ к своему веб-приложению с различными услугами: полнотекстовый поиск, краулинг контента с различной частотой, выдача отчётов и т. д.
  • ArchiveWeb.page: десктопная программа и расширение для Chrome для создания веб-архивов. Расширение можно поставить на «запись», то есть на автоматическое сохранение всех страниц, которые открывались в браузере или в конкретной вкладке. Просматривать архивы в форматах WARC, WACZ, HAR или WBN можно даже в онлайне, для этого создан сайт ReplayWeb.page


  • Brozzler: опенсорсная утилита, которая для скачивания контента использует настоящий браузер (Chrome или Chromium), а также youtube-dl и rethinkdb
  • Crawler
  • Crawler4j: опенсорсный краулер на Java с простым интерфейсом
  • grab-site: предварительно сконфигурированный опенсорсный граббер сайтов, граф ссылок хранит на диске, а не в памяти, поэтому может успешно скачать сайт даже с 10 млн страниц. Результат записывает в формате WARC
  • gecco
  • Heritrix
  • HTTrack
  • ItSucks (не поддерживается с 2010 года)
  • NetarchiveSuite: разработка Датской королевской библиотеки
  • Nutch: краулер с локальным поиском изначально создавался как альтернатива аналогичному корпоративному продукту Google
  • Octoparse: проприетарная платная программа, работает только под Windows
  • PageFreezer: ещё одна проприетарная система, веб-приложение, специализируется на автоматической архивации сайтов и соцсетей для юридических целей
  • simplecrawler: простой API для краулера, не поддерживается
  • Squidwarc: ещё один краулер, который работает через браузер (Chrome или Chromium), поэтому умеет выполнять скрипты и извлекать оттуда ссылки для краулинга
  • StormCrawler: опенсорсный SDK для построения распределённых, масштабируемых краулеров на Apache Storm
  • WAIL (Electron): Web Archiving Integration Layer (WAIL) — графический интерфейс работает поверх многих веб-архиваторов, чтобы упростить пользователям процесс сохранения и последующего просмотра веб-страниц
  • WAIL (py): версия на Python
  • WebMagic: масштабируемый фреймворк
  • Conifer (бывш. WebRecorder.io): выделил пользовательскую утилиту WebRecorder в отдельный опенсорсный проект, сам продвигает услугу облачного веб-архивирования с бесплатным лимитом 5 ГБ
  • wget: популярная утилита из набора GNU тоже умеет сохранять на диске веб-архивы в виде файлов WARC
  • wpull: wget-совместимый веб-архиватор, написанный на Python

Архивирование отдельных страниц


  • Archive.is: общедоступный сервис для съёмки снапшотов страниц, которые получают новые URL, сохраняются в архиве для всеобщего просмотра
  • curl: известная утилита командной строки для скачивания страничек
  • FreezePage: веб-интерфейс для скачивания страничек, сохранять их можно в облаке или на диске
  • Paparazzi!: маленькая утилита под macOS, которая делает графические скриншоты страниц
  • Perma.cc: сокращатель ссылок и веб-архиватор позиционируется как инструмент для школьников, студентов, юристов и всех остальных, кто хочет получить надёжную ссылку на документ с гарантией, что он не исчезнет и не изменится
  • WARCreate: расширение Google Chrome, которое сохраняет любую страницу в формате Web ARChive (WARC)
  • webkit2png: утилита командной строки для сохранения скриншотов простой командой типа webkit2png http://www.google.com/

Системы скрапинга данных


  • Import.io: платная корпоративная система для скрапинга преимущественно финансовой информации с интеграцией собранных данных в сторонний софт
  • iRobotSoft.com: персональный «менеджер», который автоматизирует рутинные ежедневные задачи в интернете: созданные «роботы» могут в том числе ходить по сайтам, кликать по ссылкам и собирать данные с веб-страниц
  • morph.io: инструментарий для написания скраперов на Ruby, Python, PHP, Perl и Node.js, коллекция более 10 800 публичных скраперов
  • Zyte (бывш. Scrapinghub): платный сервис дата-скрапинга через Extraction API
  • WebScraper.io: расширение Chrome и Firefox для удобного скрапинга, экспорт в CSV, XLSX и JSON. Поддерживает работу в облаке по расписанию, через API, с продвинутым парсингом и т. д.


    Выбор данных для скрапинга в расширении Chrome

  • Web Scraper Plus+: платный парсер под Windows, давно не поддерживается и даже не совместим с Windows 7

Сравнительную таблицу со всеми функциями см. ниже.



Отдельно стоит отметить приложения для хранения закладок с распределением по папкам, категориям, с тегами. Здесь же копии всех веб-страниц. Такие программы можно назвать «архивами закладок». Например, LinkAce или Wallabag.


LinkAce (платная)

ArchiveBox: личный архив


ArchiveBox — одно из самых функциональных решений для архивирования веб-страниц на своём хостинге. Программа отличается тем, что у неё одновременно есть и веб-интерфейс, и продвинутая утилита командной строки (официально поддерживаются macOS, Ubuntu/Debian и BSD). Скоро появится десктопное приложение на электроне под Linux, macOS и Windows (оно пока в альфе).



В ArchiveBox можно скинуть URL и указать формат сохранения: HTML, PDF, скриншот PNG или WARC. Автоматически сохраняется вся контекстная информация вроде заголовков, фавиконов и т. д. Грамотно скачивает медиафайлы с помощью youtube-dl, статьи (readability), код (git) и другие типы контента: всего около 12 модулей-экстракторов.

По умолчанию «для надёжности» все страницы вашего архива сохраняются также на archive.org. Опцию можно (и нужно) отключить.

См. также документацию по форматам сохранения и варианты конфигурации.

Инструмент командной строки работает очень просто.

Добавить ссылку в архив:

archivebox add 'https://example.com'

Добавлять контент раз в день:

archivebox schedule --every=day --depth=1 https://example.com/rss.xml

Аргумент depth=1 означает, что сохраняется эта страница, а также все страницы, на которые она ссылается.

Импорт списка адресов из истории посещённых страниц:

./bin/export-browser-history --chrome
archivebox add < output/sources/chrome_history.json
# или
./bin/export-browser-history --firefox
archivebox add < output/sources/firefox_history.json
# или
./bin/export-browser-history --safari
archivebox add < output/sources/safari_history.json

Импорт списка адресов из текстового файла:

cat urls_to_archive.txt | archivebox add
# или
archivebox add < urls_to_archive.txt
# или
curl https://getpocket.com/users/USERNAME/feed/all | archivebox add

Самые популярные настройки из командной строки:

TIMEOUT=120 # default: 60 добавить больше секунд на скачивание для медленной сети или тормозного сайта
CHECK_SSL_VALIDITY=True # default: False True = allow сохранение URL с некорректным SSL
SAVE_ARCHIVE_DOT_ORG=False # default: True отключить дублирование на Archive.org
MAX_MEDIA_SIZE=1500m # default: 750m увеличить/уменьшить максимальный размер файлов для youtube-dl

PUBLIC_INDEX=True # default: True публичный доступ к индексу
PUBLIC_SNAPSHOTS=True # default: True публичный доступ к страницам (снапшотам)
PUBLIC_ADD_VIEW=False # default: False разрешение/запрет всем пользователям добавлять URL в архив

Как вариант, можно добавлять ссылки через веб-интерфейс на локалхосте:



Сервер с веб-интерфейсом тоже запускается из командной строки:

archivebox manage createsuperuser
archivebox server 0.0.0.0:8000 # открыть http://127.0.0.1:8000

# опции, упомянутые выше
archivebox config --set PUBLIC_INDEX=False
archivebox config --set PUBLIC_SNAPSHOTS=False
archivebox config --set PUBLIC_ADD_VIEW=False

По сохранённому архиву работает полнотекстовый поиск.

Накопители


На чём хранить личный архив? Теоретически можно сбрасывать архив на компакт-диски или магнитную ленту. Но с ними возникнет проблема поиска в реальном времени. Ведь это основная функция информационного архива — выдавать информацию мгновенно по запросу. Так что самым реалистичным вариантом видится информационное хранилище на HDD (с резервированием по типу RAID).

Многое зависит от объёмов архива. Если у вас скачаны все голливудские фильмы за последние 50 лет в разрешении 4K, то не остаётся вариантов, кроме магнитной ленты. Современные картриджи формата LTO-9 объёмом 45 терабайт стоят не очень дорого.



Копия памяти человека


Кто-то считает, что нужно сохранять в архиве всю информацию, какую человек когда-либо увидел или прочитал, в том числе фотографии, видеоролики, заметки, книги, веб-страницы, статьи. Возможно, даже записи с видеорегистратора, который постоянно работает и записывает всё, что происходит вокруг. Желательно свои мысли тоже записывать (в которых есть смысл).

Такой архив — это своеобразная «цифровая память» человека, копия его жизни, всех событий и воспоминаний, с полнотекстовым поиском. Цифровая копия всего, что попадало в мозг или возникало в нём самопроизвольно. Впрочем, это уже ближе к киберпанку.


НЛО прилетело и оставило здесь промокоды для читателей нашего блога:


Доступно до 31 декабря 2021 г.

Комментарии (40)


  1. NeoCode
    03.11.2021 11:59
    +2

    Пока я просто сохраняю нужные мне странички средствами браузера в mhtml. Сайтов, целиком пригодных к скачиванию, не так уж и много (обычно это какие-то авторские работы типа книг или методичек на университетских сайтах). Но для таких есть телепорт про и другие подобные программы.

    А идеальная система - просто некая кнопка типа "лайка", аналогичная добавлению в закладки, по нажатию на которую страница сохраняется в оффлайне, добавляется в какие-то оффлайновые базы для поиска, и - в идеале - ставится на раздачу в децентрализованной сети.


    1. nobodysu
      03.11.2021 13:51
      +2

      Рекомендую SingleFile:
      github.com/gildas-lormeau/SingleFile#install


      1. NeoCode
        03.11.2021 18:00

        Спасибо, для Firefox пригодится, а то там нет встроенного сохранения в mhtml


        1. AlexanderS
          04.11.2021 16:43

          Сколько ни пробовал подобных решений — в результате отказывался от них, обнаруживая косяки. Лучше уж сохранить по старинке и запаковать в zip. Оно как-то надежнее получается и для беспроблемного открытия в будущем. Сейчас проверил — в SingleFile на сохранённых страницах спойлеры, например, не работают.


          1. Mike-M
            04.11.2021 18:38
            +2

            Снимите галочку в настройках SingleFile: Other resources => remove scripts.


            1. AlexanderS
              04.11.2021 20:50

              Ух ты! Это я просмотрел, спасибо! Я в «Содержимое HTML» это ожидал увидеть.

              А вот ещё такой вопрос. Спойлеры перед сохранением нужно открыть, иначе их содержимое не попадает в локальную копию. Я это приноровился делать через скрипт Greasemonkey через кликание на элементах спойлера требуемых сайтов. На особо медленных компах после рендеринга странички можно даже заметить закрывающиеся спойлеры) А как-то более цивилизованно эту проблему решить можно?


              1. Mike-M
                05.11.2021 00:07

                Вот с этим, увы, не подскажу.
                Знаю лишь, что для многих спойлеров достаточно отключить настройку remove scripts. При этом раскрывать спойлеры перед сохранением страницы не требуется: пример 1, пример 2.



      1. Mike-M
        04.11.2021 17:58

        До сего дня пользовался попеременно расширением Save Page WE и печатью на PDF принтер.
        Теперь — только SingleFile. Спасибо за рекомендацию!


  1. slavius
    03.11.2021 12:50
    -1

    https://habr.com/ru/company/vdsina/blog/550180/

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

    ArchiveBox — продвинутый архиватор сайтов с огромным количеством поддерживаемых форматов и интерфейсов.

    Возможности
    • Список сайтов можно подать на вход кучей разных способов (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-скриптов во время архивирования, для вырезания рекламы/попапов/разворачивания веток комментариев прямо на лету.

    • Уже работает, но нестабильно: сохранение контента за логином/пейволлом по кукам.

    Ну а для локального хранения небольшого количества нужных страниц FireFox + PrintEditWE + SavePageWE


  1. anonymous
    00.00.0000 00:00


  1. shovdmi
    03.11.2021 13:51
    +1

    Я использую расширение для браузера Joplin Webclipper, который по сути часть Joplin app (https://joplinapp.org/) в которой веду базу знаний с заметками в формате markdown.

    Что больше всего радует это работа и синхронизация баз между ПК и телефоном через Dropbox.


    1. misharin
      04.11.2021 12:38

      Тоже пользуюсь Joplin, однако для синхронизации использую Nextcloud - более приватно получается, когда на свой сервер сохраняешь.


      1. dartraiden
        04.11.2021 20:41

        более приватно получается
        Я бы не сказал, что приватнее связки Dropbox+шифрование Joplin.


        1. nobodysu
          04.11.2021 21:01

          1. dartraiden
            04.11.2021 21:36

            У меня 136 заметок. Из метаданных там видно только число файлов и дату их создания/изменения. Каким образом раскрытие этой информации ставит под угрозу мою приватность?

            Эта информация ничего не даст атакующему. Какие-то заметки обновляются иногда, какие-то никогда, какие-то ежедневно. Можно даже предположить, что последняя это ToDo. Но что с того?


    1. K0styan
      05.11.2021 11:14

      У всех приличных заметочников есть клипперы: Evernote, OneNote, Notion. Есть и у Zotero, специализированного инструмента для хранения материалов.

      Какие-то лучше работают, какие-то хуже, но в целом для персонального архива решений "из коробки" предостаточно.


      1. shovdmi
        05.11.2021 18:17

        всё так, но Joplin - opensource, бесплатные приложения для телефона, нет ограничений на объем или количество заметок. Облачная копия базы хранится не в облаке разработчика, и как следствие, бесплатные безлимитное хранилище в случае next cloud, либо объем вашего тарифного плана в случае dropbox.

        За счет нет риска получить тыкву, если разработчик вдруг решит уменьшить количество бесплатных заметок, наложить санкции и т. д.


  1. stargrave2
    03.11.2021 16:22

    В качестве WARC-прокси/просмотрщика может выступать http://www.tofuproxy.stargrave.org, сам который использую. Динамическое добавление, удаление, индексирование, поддержка сегментированных .warc.gz/.warc.zst.


  1. Sergey-Aleksandrovich
    03.11.2021 17:48
    +3

    Странно, что в браузеры не встраивают функцию "добавить в архив" (по аналогии с добавить в закладки) - жмакнул кнопку и вот тебе копия страницы в локальном хранилище


    1. Zalechi
      04.11.2021 10:52

      Кстати, чем архив отличается от сохранения страницы браузером по CTRL+S?

      Содержание не скачивает, только ссылки и тамбы?


      1. Sergey-Aleksandrovich
        04.11.2021 11:09

        Скачивает, и это тоже вариант. Только вопросом управление хранилищем занимаетесь вы (в какую папку, с каким именем, как потом найти). А если на уровне браузера по аналогии с закладками реализовать, то сохраненное лежит в папках браузера, доступно по тегам/наименованию и (потенциально) может синхронизироваться на разных устройствах, где браузер авторизован вашим аккаунтом.


        1. Zalechi
          04.11.2021 11:36

          Угу...

          Тут не понял:

          А если на уровне браузера по аналогии с закладками реализовать,

          А ctrl+s на уровне ядра или браузера реализовано?


          1. Sergey-Aleksandrovich
            04.11.2021 11:40

            Ctrl+S это просто сохранить копию страницы на диск, как сохранить документ в вроде или екселе. А я говорю про сервис/фичу от браузера. Т.е. не "я ж сам все могу", а "вот у нас удобный встроеный сервис"


            1. Zalechi
              04.11.2021 11:45

              Ктрл+С вызывает функцую браузера выполняющую сохранение страницы, однако я не понимаю о какой фиче Вы говорите?


              1. Sergey-Aleksandrovich
                04.11.2021 12:03

                • я не хочу думать о месте и структуре хранения - пусть браузер (его разработчики) выберут где и как оно хранится;

                • если сохранить файл на диск, то поиск нужного надо делать по файловой системе, а браузер в адресной строке не покажет сохраненные страницы после перемещения файлов, переустановки браузера или ОС - пусть браузер хранит и индексирует сохраненное самостоятельно;

                • я хочу иметь доступ к сохраненным копиям страниц с разных устройств (домашний комп, рабочий ноут, смартфон) - пусть браузер синхронизирует сохраненные страницы между моими устройствами.

                Вот такую фичу я хочу


                1. Zalechi
                  04.11.2021 12:07

                  Получается расширить функционал браузера при сохранении страниц


                1. ComodoHacker
                  08.11.2021 12:47

                  И все это, конечно же, бесплатно..

                  В Firefox это есть, называется Pocket.


  1. Kirikekeks
    03.11.2021 20:44
    +1

    elinx --dump "https://habr.com/ru/post" |gzip > o_web_archive.gz

    zgrep 'шаман|buben|webarchive' /zabil/*. gz

    Спасибо за статью. Просто есть еще вот такой способ, у которого тоже есть достоинства.


  1. AlexanderS
    03.11.2021 23:07

    Если у вас скачаны все голливудские фильмы за последние 50 лет в разрешении 4K, то не остаётся вариантов, кроме магнитной ленты. Современные картриджи формата LTO-9 объёмом 45 терабайт стоят не очень дорого.

    Боюсь вы несколько ошибаетесь. 45 Тб — это с сжатием. А в реальности может получиться и все 18 Тб. Тоже немало, но цифра всё же уже не так впечатляет. Плюс LTO, тем более 9-ка, всё же технология уже достаточно тонкая и есть там некоторые проблемы с поиском привода, который бы нормально всё прочитал через много лет.


    1. QuAzI
      05.11.2021 09:16

      А что бы вы посоветовали не сильно дорогое для SOHO? Именно с заделом "чтобы потом было проще прочитать"


      1. AlexanderS
        05.11.2021 12:30

        У меня нет такого опыта, чтобы советовать. Просто ко мне пару раз обращались именно с такой проблемой. А насколько она проблемная статистически я даже и не знаю, может это не так и страшно и всего у 0,001% встречается. В энтерпрайзе всё же пленка-то используется. С другой стороны в энтерпрайзе без проблем и в запас приводы покупают, да и могут денег отвалить за архивные модули. А в личных целях это будет непланируемое разорение. Я в своё время сделал ставку на обычные диски + Blu-Ray. Для операционного материала используется зеркальный RAID, для архивного — всё остальное, особо важное ещё и закатывается на 100 Гб болванки. Но тут всё зависит от объёмов. Да и 5 лет назад цены на диски-то были более гуманные.


  1. Dee3
    03.11.2021 23:15

    Добавил страничку в закладки.
    У хабра же есть политика долговременного сохранения информации?


    1. Sergey-Aleksandrovich
      04.11.2021 11:21

      Eсть такое понятие как "контрагентский риск" - все эти политики не более, чем "обещание".


    1. dartraiden
      04.11.2021 20:44

      Хабр даёт автору возможность убрать пост в черновики в любое время.


  1. aik
    04.11.2021 10:39

    Формат warc лично я не особо понимаю, чем он лучше простого архива?
    Всё равно приходится распаковывать для удобного использования.


  1. Browning
    04.11.2021 11:42

    Не устаю призывать: дамы и господа, пожалуйста, сохраняйте важные страницы не только себе, но и в Архив интернета. Кто-то в будущем скажет вам спасибо.


  1. sakontwist
    04.11.2021 15:39

    Сайты прекрасно сохраняются в Joplin с помощью его же плагина для браузеров.


  1. Mike-M
    04.11.2021 18:56

    Чтобы уменьшить количество битых ссылок в статьях на Хабре, хорошо бы разрешать сохранение в них дополнительных материалов, тех же *.docx например.
    Сейчас, насколько я знаю, Хабр сохраняет у себя только картинки из статей.
    Что на это скажет уважаемый boomburum?


  1. QuAzI
    05.11.2021 09:11

    archivebox выглядит интересно. А то сильно неудобно в FF каждый раз переключаться в Reader mode и оттуда в PDF "печатать" удобочитаемый контент (без смузистилей, баннеров и прочего).

    Сохранность контента, конечно, печалит. Даже для контента который остался опубликован на хабре часто можно увидеть что скрины потеряны безвозвратно.

    И отдельные вопросики с форматами хранения, чтобы это потом ещё и прочесть можно было нормально на любом подручном, в т.ч. на телефоне или е-книжке. Тут, мне кажется, не хватает возможности выгонять контент в Markdown или epub. У Instapaper есть возможность группу статей экспортнуть в epub - вот что-то такое же хочется видеть для хабра в формате "еженедельный дайджест"

    up: что-то попробовал archivebox натравить на эту статью и с лёту обломался(