Как защитить видео от скачивания с сайта: меры по возрастанию
Запрос «как защитить видео от скачивания» обычно приходит с ожиданием, что где-то есть галочка, которая всё решит. Галочки нет. Всё, что браузер показал пользователю, уже расшифровано на его устройстве, а значит, может быть записано.
Дальше проще думать не в терминах «защитить», а в терминах «сделать дороже». Каждый следующий уровень поднимает цену копирования: от «сохранить одним кликом» до «надо разбираться, ставить утилиты и потратить час». В какой-то момент это перестаёт окупаться для того, кто хотел забрать.
Ниже меры по возрастанию сложности и стоимости, с честной пометкой, что каждая реально даёт. И отдельный раздел про то, кому какая мера вообще нужна: маркетинговому ролику на лендинге защита чаще вредит.
Начнём с неудобного: полной защиты не существует
Чтобы человек увидел видео, браузер должен его получить, расшифровать и нарисовать на экране. На этом этапе кадры уже есть в открытом виде на чужом устройстве. Дальше вопрос инструмента: расширение, вкладка «Сеть» в инструментах разработчика, утилита вроде 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 и постоянная поддержка обычно выходят дороже самой подписки. Для контента дешевле фильма это редко окупается.