Skip to content

Repository files navigation

VK Video Downloader

VK Video Downloader

Userscript для скачивания доступных видео, аудиозаписей и голосовых сообщений с vkvideo.ru, vk.com и vk.ru.

Версия 0.10.0 Лицензия MIT

Установить скрипт · Русский · English

Установка

  1. Установите Tampermonkey для Chrome, Edge, Firefox или Opera.
  2. Откройте файл установки и подтвердите добавление скрипта.
  3. Откройте видео, аудиозапись или голосовое сообщение и запустите воспроизведение. Панель скачивания появится в правом нижнем углу.

При первом скачивании Tampermonkey может запросить доступ к CDN, с которого загружается видео. Без этого разрешения браузер не сможет сохранить файл.

Что поддерживается

Источник Что делает скрипт
Прямой MP4 Предлагает выбрать разрешение от 144p до 2160p и скачивает файл с индикатором прогресса
HLS Загружает сегменты, сохраняет исходный файл и копирует команду ffmpeg для ремукса в обычный MP4
DASH или HLS с отдельным аудио Показывает манифест и готовит команду yt-dlp
Аудиозаписи Выбирает играющий трек, скачивает прямой файл либо расшифровывает HLS и сохраняет MP3/AAC
Голосовые сообщения Сохраняет доступную MP3-версию; OGG находится в разделе «Дополнительно»

Все запросы выполняются локально в браузере. Проект не использует собственный сервер и не отправляет ссылки сторонним сервисам.

Использование

  1. Запустите видео: до начала воспроизведения плеер обычно не запрашивает ссылки на потоки.
  2. В карточке «Видео» выберите качество и нажмите «Скачать видео». Если страница загрузила несколько роликов, сначала выберите нужное название из списка.
  3. Если прямого MP4 нет:
    • для обычного HLS нажмите «Скачать видео»;
    • если у потока отдельная аудиодорожка, откройте «Дополнительно» и используйте подготовленную команду yt-dlp;
    • после загрузки исходного HLS-видео выполните автоматически скопированную команду:
ffmpeg -i "<название>.src.ts" -c copy -movflags +faststart "<название>.mp4"

Ремукс выполняется без перекодирования, поэтому обычно занимает заметно меньше времени, чем конвертация видео.

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

Схема панели VK Video Downloader
Схема интерфейса. Панель показывает один выбранный файл вместо списка сетевых запросов.

Ограничения

  • Ссылки появляются только после запуска воспроизведения.
  • HLS-сегменты временно хранятся в памяти. Для очень длинных видео разумнее использовать yt-dlp.
  • Скрипт не объединяет в браузере отдельные видео- и аудиодорожки. В таком случае он предлагает команду yt-dlp.
  • Аудиозаписи VK могут передаваться как зашифрованный HLS. Скрипт поддерживает стандартный AES-128, но для других методов шифрования предложит yt-dlp.
  • Подписанные CDN-ссылки ограничены по времени, поэтому загрузку лучше начинать сразу.
  • Работа зависит от внутреннего формата плеера VK и может потребовать обновления после изменений на стороне сайта.

Если панель пустая

Ссылки не появились после запуска медиа

Перезагрузите страницу и снова запустите воспроизведение. Скрипт устанавливает перехватчики на этапе document-start, поэтому после установки Tampermonkey уже открытую страницу нужно обновить.

В консоли должна появиться строка [VKDL] ... активен (хуки на unsafeWindow). Если менеджер userscript не предоставляет unsafeWindow, используйте Tampermonkey.

Выбрано не то видео

Откройте список «Видео» и выберите нужное название вручную. Страница VK может заранее загрузить рекомендации и превью вместе с текущим роликом.

HLS-файл не перематывается или показывает неверную длительность

Это исходный фрагментированный файл. Выполните команду ffmpeg, которую скрипт автоматически копирует после загрузки.

Как это работает

Технические детали

VK загружает параметры плеера и сообщений во время работы приложения. Userscript устанавливает перехватчики JSON.parse, fetch и XMLHttpRequest в контексте страницы через unsafeWindow, а также отслеживает URL с расширениями .mp4, .m3u8, .mpd, .mp3 и .ogg.

Найденные параметры группируются по идентификатору из CDN-ссылки. Скрипт сопоставляет название ролика с document.title, но оставляет ручной выбор на случай, если страница загрузила несколько видео.

Прямые MP4 скачиваются через GM_xmlhttpRequest. Для HLS скрипт получает плейлист и сегменты, после чего сохраняет исходный файл. Локальный ffmpeg нужен только для создания обычного MP4 с корректным индексом и перемоткой.

У голосовых сообщений используются доступные в данных страницы поля link_mp3/link_ogg (в некоторых интерфейсах — linkMp3/linkOgg). Музыкальный HLS определяется по домену vkuseraudio; сегменты с AES-128 расшифровываются локально через Web Crypto API. Из MPEG-TS извлекается аудиопоток MP3/AAC, поэтому для обычного аудио HLS локальный ffmpeg не нужен.

Участие в разработке

Сообщения об ошибках и pull request приветствуются. Для проблем с определением видео приложите URL страницы, строку состояния панели и информацию о браузере и версии Tampermonkey. Не публикуйте приватные CDN-ссылки, cookies или токены.

Правовые условия

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

Проект распространяется по лицензии MIT © Dmitry Tumanov (@D1m7asis).

About

Userscript для скачивания видео, аудиозаписей и голосовых сообщений VK: MP4, HLS, MP3 и OGG.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages