Что случилось с Интернетом?

У тебя часто было такое, что хочешь посмотреть какой-нибудь старый контент, но не можешь вспомнить где он находится или не можешь его найти? Возможно, автор просто удалил контент или его заставили удалить неугодное.

Со времен появления Интернета уже потеряно более 75% информации, то есть современный интернет представляет собой то ещё дырявое ведро, от коллапса спасает эмиссия тиктоков.

На самом деле, большинство потерянного контента представляло интерес в основном только для нетсталкеров. Однако нельзя угадать какая информация станет критически важна ретроспективно.

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

Что не так со ссылками?

Существуют битые ссылки - это ссылки, по которым стало невозможно получить контент.

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

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

Ты, наверное, когда-то делал закладки в браузере. Я тебя понимаю и не буду осуждать, но закладки - это просто ссылка с подписью, которые могут стать битыми в любой момент.

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

Для примера у нас будет такая структура в файловой системе:

/[источник|автор]/[объект]/[скачанные файлы связанные с объектом]

Hidden text

Если у тебя система на основе Linux и носитель отформатирован в BTRFS, то лучше монтировать его с параметрами сжатия в fstab.

# Пример:
UUID=x-x-x-x-x   /var/www/archive   btrfs   noatime,nodiratime,compress=lzo,subvol=@rootfs 0    0

Или в виде параметров утилиты mount.

# Пример:
sudo mount /dev/sdX /var/www/archive -o compress=lzo

Как скачивать веб-страницы не отходя от браузера?

С архивированием инкапсулированных блоков данных, офисных документов, исходников, дампов проблем обычно не возникает.

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

Из популярных средств у нас есть SingleFileZ - расширение браузера и cli-утилита, вариант SingleFile с открытым исходным кодом от одного автора, которое отвязывает все ресурсы страницы и сохраняет их в ZIP-архив, перед этим расширение оптимизирует ресурсы.

Hidden text

Обычный Singlefile кодирует все ресурсы в base64 и вставляет их прямо в HTML-документ. Это может иметь применение, но для архивации это не годится. Более ранний MHTML имеет такую же проблему.

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

В следующих материалах настроим авто обновление контента с помощью, например, Selenium или Puppeteer.

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

Но веб-приложения с видеоконтентом наносят ответный удар по нам.

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

Hidden text

На YouTube в едином файле аудио и картинка хранится только в кодеке h264 и разрешениях 720p и 360p.

Нам нужен yt-dlp - форк youtube-dl с открытым исходным кодом, который (несмотря на название) позволяет сохранять видео и метаданные объектов (комментарии, описания, логотипы, субтитры и т. д.) не только с youtube, но и с огромного количества других ресурсов (в том числе TikTok, Twitch, PornHub).

Hidden text

Он доступен в популярных репозиториях GNU/Linux:

sudo pacman -S yt-dlp # Arch Linux
sudo apt install yt-dlp # Debian Bookworm / Ubuntu Jammy

Пример параметров для yt-dlp:

# Можно добавить в ~/.zshrc или ~/.bashrc
function ydl() {
  yt-dlp \
  --ignore-errors \
  --no-overwrite \
  --write-thumbnail \
  --write-info-json \
  --write-comments \
  --write-auto-sub \
  --embed-metadata \
  --write-subs \
  --sub-lang en,ru \
  --prefer-free-formats \
  -S res,codec:av1 \
  -f 'bestvideo[height<=1080]+bestaudio/best' \
  -o '%(uploader)s/%(title)s [%(id)s]/%(extractor)s.%(ext)s' $1
}

ydl <URI писать здесь>

Для скачивания видео достаточно перейти используя терминал и shell в директорию с "источниками" и "авторами" и дописать в конце URI с видео/каналом/плейлистом.

Что мы наделали?

  • Теперь при просмотре сохранённых ресурсов ты не отправляешь свои короткие IPv4 и длинные IPv6 с отпечатками браузера и ОС в личку множеству сетевых узлов.

  • Данные будут доступны при перебоях с сетью, то есть при шальном провайдере или серьезном государстве.

  • Дилер контента не может отозвать уже полученную дозу.

До полной победы осталось лишь настроить домашний сервер с self-hosted сервисами и автоматизировать процессы.

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


  1. ritorichesky_echpochmak
    06.09.2023 07:53
    +3

    Концепт интересный, но что-то я скачал эту статью, а она весит как не в себя - 1.4Мб против 9кб файл скачанный через MarkDownload, без баннеров и прочих отвлекаторов, при том что картинок тут как бы и нет. Единственный минус у MarkDownload - нужно посматривать, что скрытый под спойлеры контент раскрылся нормально.

    Ожидал что будет zip, но нет, там html который в себе где-то под капотом что-то может и распаковывает, но крайне не очевидным для стандартных архиваторов образом.

    Посмотреть контент, судя по всему, можно только прям полноценным браузером, потому что Lister от Total Commander и PocketBook 740 подавились. Поиск по контенту работать не будет никогда.

    С моей точки зрения лучше по максимуму всё приземлять как Markdown, а если нужны картинки и прочее медиа прям в странице, то в PDF (Firefox -> Toggle Reader View -> Print to PDF), но тоже с контролем спойлеров. Markdown вообще топ, можно потом процессить чем угодно и конвертировать во что угодно, в отличие от этой пепяки.

    Ютубы же да, через yt-dlp - лучший на сегодня вариант. Для поддержки старого планшета, ещё не умевшего все эти новые модные форматы и 4к использую youtube.cmd следующего вида

    yt-dlp -S "res:1920,fps" -S "codec:h264" %*

    Плюс он не скачивает дубли, а если файлы качаются не в одну директорию (например сортируются по категориям после скачивания), то дубли можно выкосить добавив

    --download-archive downloaded.list


    1. revoitic Автор
      06.09.2023 07:53

      Согласен, преобразовывать содержимое в другие форматы будет полезным.

      Я вот пока использую auto-editor для скачанных видео с youtube и Twitch, он позволяет делать авто монтаж видео по простым правилам, например, он позволяет обрезать тишину (особенно полезно для прямых эфиров и стримов). Есть плагины для mpv, которе делают монтаж в реальном времени.

      Markdown( и pdf) был бы ультимативным решение, если бы чуть ли не на каждой второй веб-странице была вставка с webg и всяки таким подобным)

      h264 весит в разы больше av1. Так же Youtube сильно режет качество для h264 и в меньшей степени для vp9. Тут нужно выбирать между совместимость и качеством.

      SingleFileZ создаёт расширение .zip.html, но на самом деле там просто zip. Это можно настроить. Предпологаю, что это сделанно для автоматического открытия браузером такого файла. Приоткрытии такого файла расширение распаковывает.

      Для поиска по таким файлом утилиты дылжны уметь работать zip архивами. А вот, например, с tar.xx были бы такие проблемы.


      1. ritorichesky_echpochmak
        06.09.2023 07:53

        обрезать тишину

        yt-dlp умеет через ffmpeg делать что-то типа

        --external-downloader ffmpeg --external-downloader-args "ffmpeg_i:-ss %2 -to %3"

        возможно и тишину можно аналогично выкашивать

        webg

        Немного не понял. Имеется в виду WebGL? Как бы при печати в PDF там уже всё порендерено и не важно, если вас не интересует, конечно, именно лютейший интерактив, веб-игры и т.д.

        создаёт расширение .zip.html, но на самом деле там просто zip

        По умолчанию там html-страница, в которую впилен энкодированный во что-то zip (подозреваю, что в base64), в итоге ни браузеры попроще, ни TotalCommander (который у меня прожёвывает всё!), ни поиск любым инструментом не работают. С tar.xx у тотала и 7-zip никаких проблем.


      1. Dart55
        06.09.2023 07:53

        yt-dlp умеет вырезать фрагменты SponsorBlock


  1. fifonik
    06.09.2023 07:53
    +2

    Некоторые видео-плееры (например MPC HC) умеют проигрывать/скачивать видео, пользуясь упомянутыми youtube-dl/yt-dlp: скачиваете yt-dlp.exe, сохраняете его в каталог с exe-плеера и потом "Ctrl+O | Paste URL | Enter". Потом "File | Save a Copy".

    P.S Основные параметры yt-dlp задаются прямо в настройках плеера


  1. LaserPro
    06.09.2023 07:53

    Есть еще такой проект: https://archivebox.io/
    "ставишь плагин в свой Firefox и он автоматически сохраняет тебе на сервер всё, что ты смотрел в интернете."
    сам пока еще не пробовал)


    1. NutsUnderline
      06.09.2023 07:53
      +1

      оно похоже могет работать с упомянутым SingleFile в качестве плагина


    1. revoitic Автор
      06.09.2023 07:53

      Был одно время у меня настроен archivebox, но захотелось что-то более примитивное)


  1. NutsUnderline
    06.09.2023 07:53
    +2

    скачиваю с хабара страницы в PDF при помощи Opera - потом можно открывать на любом тапке. В отличие от firefox.chrome.vivaldi opera не режет веб на бумажные страницы а сохраняет длинную простыню. Не весь pdf софт это хорошо понимает но в целом смотреть есть чем. Длинные горизонтальные скроллы командных строк нельзя прокутить, но можно скопировать целиком.

    Раньше сохранял опять же в Opera в формат .MHT - в принципе тоже нормально было, но формат мало где поддержан


  1. ru1z
    06.09.2023 07:53
    +2

    Zotero вроде сейчас умеет сохранять в SingleFile и еще есть плагины для сохранения в архив интернета https://github.com/leonkt/zotero-memento.
    В Zotero бы еще добавить опцию сохранять статью в маркдаун (да уж и видео, раз про это вспомнили), будет неплохо. По крайней мере, с зотеро проще решить задачу еще и про


    не можешь вспомнить где он находится или не можешь его найти
    Обычно проблема в том, что в результате — хаос из накаченных файлов (парадокс папки «загрузки»).


    1. ritorichesky_echpochmak
      06.09.2023 07:53
      +1

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

      Тут нужен какой-то софт, который будет пробовать какой-то из вариантов:

      • Сходить в публичную библиотеку (например IMDB для видео) и спросить там к какой категории относится данный файл

      • Спросить у какого-нибудь убертренированного цифрофильтра типа ChatGPT "как думаешь, к какой категории из (список) относится этот контент"

      • Пытаться найти категорию основываясь на том, что её название написано в имени файла или даже в самом файле. Например статьи в которых содержится Python в названии можно автоматически двигать в поддиректорию Python, внутри которой повторно выполнять аналогичную сортировку. Получим по итогу, что все статьи по Django будут лежать в Python/Django. Ну, почти все, учитывая любовь авторов к странным заголовкам)

      Разумеется ни один из вариантов не даст 100% результат, но как первое решето для отсеивания должно сгодиться

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


      1. ru1z
        06.09.2023 07:53
        +1

        Ну вот зотеро что-то такое предлагает, правда не все из коробки и без ChatGPT (хотя наверняка можно такой плагин написать, может кто-то уже и написал). Метаинформацию с популярных сайтов может вытягивать (правда с imdb транслятор похоже сломался, раньше работал, но с ютуба и других вроде работает). А дальше можно настроить, чтобы файлы по метаинформации правильно раскладывались по папкам с ZotFile.
        Оценка качества материала с ChatGPT — это как-то слишком, имхо. Обычно предполагается, что сохраняется важный материал, допустим книга к прочтению, а оценку ставят после прочтения. Если оценку ставит ChatGPT, то наверное и хранить материал на диске не явно необходимо.


        1. ritorichesky_echpochmak
          06.09.2023 07:53
          +1

          В интернете оценки разные бывают, от накрученных не соответствующих даже реальному контенту, до полного их отсутствия. Максимум от IMDB что нужно - это категория, может быть теги, иногда краткое описание от самого автора. От AI же я хочу чтобы он мог мне сгенерить что-то аля "чел, всё что тут написано уже есть вон в той, ранее отложенной на почитать тобой статье и тех трёх книжках, только в этом варианте ещё половина пропущена, а вот эти два типа новых абзаца вообще выдумки и отсебятина, не нужно их читать". Разумеется это более важно для всякого рода технической литературы, потому что сложное чтиво плохо усваивается чтением по диагонали, а значит на него автоматически тратится куда больше времени и мыслетоплива. Ну или чтобы AI мог выделить из этой статьи автоматом что-то новое, чего ещё не было отложено в мою библиотеку. Ну или хотя бы сказать что "это вторая редакция этой книги, а у тебя уже куплена PDF'ка в питерпресс с новой редакцией"

          Я устал искать ошмётки нового среди кучи всплывающих баннеров в этих вот поломанных интернетах и прихранивать на "потом перечитать, потому что завтра сайт сдохнет, санкции, интернет по карточкам"


          1. ru1z
            06.09.2023 07:53
            +1

            Тогда это наверное нужно смотреть куда-то в сторону обсидиана, где пишут кучки плагинов с ChatGPT API. По описанию Auto Classifier похож, который добавляет теги, ну и добавить плагин, который по тегу раскладывает в подпапки (Auto Note Mover?). В принципе можно и виспер настроить, чтобы видео транскрибировал.
            Правда с ChatGPT куда-то информация отправляется, что тоже наверное не очень хорошо.


            1. ritorichesky_echpochmak
              06.09.2023 07:53
              +1

              Спасибо, посмотрю. Я активно пользуюсь обсидианом для своих записок сумасшедшего, трекинга что я делаю по работе (Daily notes чтобы потом трекать время, в помощь к репорту который git готовит по коммитам) и даже приспособил для микробложика (статья пишется в Obsidian, коммитается на гитхаб и оттуда через GitHub Actions её в сайтик раскатывает Hugo), но мозги в кучку собрать всё равно не могу)


  1. hurtavy
    06.09.2023 07:53
    +1

    Интересный проект. Я пока пользуюсь WebScrapBook, там хоть редактировать страницы можно, вырезая всё ненужное


    1. Dart55
      06.09.2023 07:53

      В SingleFile тоже есть возможность редактировать и вырезать, только спрятана под названием "Аннотировать и сохранить страницу..."


      1. cry_san
        06.09.2023 07:53
        +1

        Если бы еще запоминал шаблон для домена, то цены бы ему не было.


    1. diogen4212
      06.09.2023 07:53
      +1

      всякие ненужные сейчас вещи вроде рекламных баннеров могут оказаться не менее ценными лет через 10-20, чем сам контент… просто ради погружения в эпоху.


  1. diogen4212
    06.09.2023 07:53
    +1

    Идея хорошая, но где столько места на диске найти, чтобы всё скачивать в автоматическом режиме? Особенно видео. А вручную сохранять и так можно, даже если это какой-то древний формат веб-страниц или специфическое браузерное расширение, то можно при желании в отдельной виртуалке открыть этой же самой программой.
    Ютубчик сохраняю с помощью древнего Download Master, который до сих пор обновляется и использует ytp.dlp под капотом. Но опять же только то, что очень хочется сохранить.


    По Хабру есть вот такое, весь Хабр на начало августа этого года весит чуть больше 12 Гб (а в архиве вообще меньше 2-х гигов). Есть идеи прикрутить к этой базе поиск через нейросети (LlamaIndex или Langchain), но пока руки не доходят


    Обычный Singlefile кодирует все ресурсы в base64 и вставляет их прямо в HTML-документ. Это может иметь применение, но для архивации это не годится. Более ранний MHTML имеет такую же проблему.

    Ради интереса открыл странички, сохранённые в формате mht в base-64 старой Оперой Presto, всё прекрасно открылось современным Edge.


  1. engine9
    06.09.2023 07:53

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

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

    yt-dlp -F https://youtu.be/Seac3PMt6N0

    Получаем список форматов, доступных для скачивания в виде удобной таблицы:

    Самая левая колонка это код формата
    Самая левая колонка это код формата
    yt-dlp -f 600 https://youtu.be/Seac3PMt6N0

    Предположим, что я захотел скачать только звук закодированным Opus в ultra-low качестве (на деле оно оказывается отличным). Используем ключ -f и пишем после него код.

    Если утилита ругнётся что "filename too long", после кода "600" пишем ключ --restrict-filenames и вуаля, файл в 16 Мб быстро скачивается. Проиграть его потом можно в браузере, что на десктопе что на андроиде.


  1. NutsUnderline
    06.09.2023 07:53

    Захотелось мне поглядеть на  SingleFile, провел свои тесты, на одной и той же странице: просто SingleFile - 1.1M , SingleFileZ - 0.7M, PDF - 2.5M - т.е на обычную дискету уже не влезет :)


    1. revoitic Автор
      06.09.2023 07:53

      Да, жалко)

      Но, кстати, в SingleFileZ можно настроить оптимизирование ресурсов. Например, можно удалять невидимые фрагменты страниц.


  1. slavius
    06.09.2023 07:53

    Странно, что не вспомнили про дополнения к браузерам Save Page WE и Print Edit WE - позволяют сохранять страницы и редактировать при необходимости.