← на главную

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

Избранное: мои фото- и видеоработы, забрать своё из облаков, КЭНК

Забрать своё из облаков: вконтакте

Как я писал в одной из первых заметок цикла, ВК не позволяет полноценно выгрузить из себя пользовательские данные. Запросив выгрузку на странице https://vk.com/data_protection, через некоторое время пользователь получает относительно небольшой zip архив, внутри которого расположен набор слинкованных html страниц без медиафайлов. Сами медиаматериалы (изображения и видео) в архив не попадают — указаны только либо ссылки на исходные объекты в ВК, либо фото (или превью видео), которые подгружаются с серверов ВК в интернете. Интересно, что при этом другого динамического или внешнего контента нет — css уже положены в папку, а из javascript внутри страниц только несколько обработчиков onclick без внешней загрузки.

Я изучил сторонние парсеры, которые опубликованы в интернете. Всё найденное страдает схожим набором недостатков. Нужно давать доступ к странице (или открыть её для всех, чего я делать не хочу). А ещё все подобные инструменты быстро устаревают в условиях постоянно меняющихся верстки сайта и механизмов авторизации — например, чудо-комбайн для загрузки видео yt-dlp в этом году несколько месяцев не мог качать видео из ВК после очередной смены алгоритмов сайта.

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

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

Также, пока работает yt-dlp, можно попробовать выкачать им видео, и заменить ссылки в дампе на скачанные файлы (это будет посложнее, будет завязано на работоспособность yt-dlp, и точно не позволит скачать часть видео без авторизации yt-dlp в ВК)

Думаю как быть дальше.