Pull to refresh

Как скачать весь интернет? Становимся датахордерами. Начинаем с SingleFileZ и yt-dlp

Level of difficultyEasy
Reading time3 min
Views14K

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

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

Со времен появления Интернета уже потеряно более 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 сервисами и автоматизировать процессы.

Tags:
Hubs:
Total votes 31: ↑31 and ↓0+31
Comments26

Articles