Как защитить видео от скачивания с сайта: меры по возрастанию

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

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

Ниже меры по возрастанию сложности и стоимости, с честной пометкой, что каждая реально даёт. И отдельный раздел про то, кому какая мера вообще нужна: маркетинговому ролику на лендинге защита чаще вредит.

Начнём с неудобного: полной защиты не существует

Чтобы человек увидел видео, браузер должен его получить, расшифровать и нарисовать на экране. На этом этапе кадры уже есть в открытом виде на чужом устройстве. Дальше вопрос инструмента: расширение, вкладка «Сеть» в инструментах разработчика, утилита вроде yt-dlp, в крайнем случае запись экрана.

Даже DRM, который стоит денег и нервов, не спасает от съёмки монитора телефоном с соседнего стола. Он поднимает планку, но не закрывает дверь.

Поэтому цель формулируется так: сделать копирование дороже, чем ценность контента для того, кто копирует. Всё остальное - самообман и потраченное время разработчика.

От кого вы защищаетесь

Меры выбираются не по контенту, а по нарушителю. Обычно их три типа.

  • случайный зритель: правый клик, «сохранить видео как», без злого умысла. Останавливается самыми примитивными мерами
  • конкурент или агрегатор: заберёт ролик, чтобы поставить у себя. Мотивация есть, но тратить час он не станет
  • целенаправленный слив: платный курс, который выкладывают в общий доступ. Здесь человек готов возиться, и остановить его в браузере нельзя

Если вы не знаете, кто из трёх ваш случай, начинать с DRM бессмысленно. В девяти случаях из десяти хватает второго или третьего уровня.

Уровень 0: отключить контекстное меню (почти бесполезно)

Самое популярное решение из интернета: перехватить правый клик, добавить атрибут controlsList со значением nodownload, накрыть плеер прозрачным слоем. Работает это ровно против первого типа - против человека, который просто ткнул правой кнопкой.

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

Вывод: сделать можно, тратить на это больше пяти минут не стоит, считать это защитой тоже.

Уровень 1: убрать прямую ссылку на файл

Следующий шаг - чтобы адрес видео нельзя было угадать и переслать. Файл не лежит по адресу вида /uploads/video1.mp4, а отдаётся через эндпоинт, который сначала проверяет сессию и права и только потом отдаёт поток.

  • имена файлов случайные, без порядковых номеров и понятных названий
  • прямой доступ к папке с видео закрыт на уровне веб-сервера
  • происхождение запроса проверяется по заголовкам Referer и Origin

Про Referer честно: он подделывается одной строкой в curl. Это фильтр от лени, а не защита. Полезен он в основном против чужих сайтов, которые встроили ваш файл себе и жгут ваш трафик.

Уровень 2: подписанные ссылки с коротким сроком

Рабочая и недорогая мера. Сервер выдаёт ссылку с подписью и меткой времени, например на 60-300 секунд. Дальше эта ссылка мертва: скопировали её в чат - через пять минут там пустота.

Подпись считается секретным ключом, который лежит только на сервере, поэтому подделать её нельзя. Такое умеют почти все CDN и объектные хранилища, включая российские, обычно из коробки.

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

Уровень 3: привязка к пользователю и водяной знак

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

И самая недооценённая мера для платного контента: именной водяной знак. Поверх кадра тонким шрифтом идёт почта или id пользователя, время от времени меняя положение. Смотреть не мешает, а желание выложить запись в общий чат пропадает: видно, чья копия.

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

Уровень 4: раздача кусками через HLS

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

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

Дополнительно сегменты шифруются AES-128, а ключ выдаётся по тому же токену с проверкой прав. Это не DRM, но для копирования заметно сложнее.

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

Уровень 5: DRM и почему он дорогой

Widevine у Google, PlayReady у Microsoft, FairPlay у Apple. Ключи шифрования выдаёт лицензионный сервер, расшифровка идёт в защищённой части устройства, а на некоторых связках система блокирует и запись экрана.

  • нужен лицензионный сервер: свой или подписка у провайдера, это ежемесячные деньги
  • нужны все три системы сразу, иначе часть аудитории останется без видео
  • для FairPlay нужен сертификат Apple и отдельная возня с ним
  • тестировать придётся на реальных устройствах: старые телевизоры и браузеры отваливаются непредсказуемо
  • поддержка ложится на разработчика навсегда, а не на один спринт

Смысл в DRM появляется, когда контент лицензионный и защита прописана в договоре: кино, спортивные трансляции, дорогие библиотеки. Для курса на 50 человек это стрельба из пушки по воробьям, а из потерь - деньги, время и часть зрителей, у которых просто не запустилось.

Кому какая мера нужна

  • маркетинговый ролик на лендинге: не защищать вообще, задача обратная - чтобы он открылся у всех и быстро. Если ролик крутится в видеовиджете, любые прослойки только замедляют старт
  • видеоотзывы и кейсы: не защищать, максимум логотип в углу. Пусть расходятся, это работает на вас
  • платный курс: HLS с шифрованием, подписанные ссылки, именной водяной знак, журнал доступа. Этого хватает
  • внутренние записи и обучение сотрудников: авторизация, короткие подписанные ссылки, журнал просмотров. Здесь важнее знать, кто смотрел, чем не дать скачать
  • лицензионный контент: DRM, потому что иначе договор не подписывают

Проверьте себя одним вопросом: что именно вы теряете, если ролик скачают? Если внятного ответа нет, защита не нужна - лучше потратьте те же часы на то, чтобы видео быстрее грузилось и досматривалось.

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

Частые вопросы

Можно ли запретить запись экрана?

В обычном браузере нет, такого механизма не существует. Отдельные связки DRM и операционных систем действительно дают чёрный кадр при записи, но работает это не везде и обходится съёмкой монитора на телефон. Считайте запись экрана неустранимой.

Отключение правой кнопки мыши хоть что-то даёт?

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

Помогает ли размещение на YouTube с доступом по ссылке?

От скачивания нет: ролики с YouTube снимаются готовыми утилитами. Скрытая ссылка защищает только от попадания в поиск и рекомендации. Если контент платный, YouTube для него не хранилище.

Сколько стоит подключить DRM?

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