ну, вы не можете защитить это на 100%, но вы можете сделать это сложнее. С этими методами, которые я объясняю, я столкнулся с ними во время изучения методов защиты в PluralSight и BestDotNetTraining. . тем не менее, ни один из этих методов не помешал мне загрузить то, что я хочу, но мне было трудно курировать загрузчик, чтобы пройти их защиту.
Помимо других упомянутых способов отключить контекстное меню. пользователь все еще может использовать сторонние инструменты, такие как InternetDownload manager или другое подобное программное обеспечение для загрузки видео. метод защиты, который я объясняю здесь, состоит в том, чтобы смягчить программное обеспечение сторонних производителей.
требование всех этих методов - блокировать пользователя, когда вы узнаете, что кто-то загружает ваши видео. таким образом, они могут загружать только одно или два видео только до того, как вы запретили им доступ к вашему веб-сайту.
отказ
Я не буду нести никакой ответственности, если кто-то злоупотребляет этими методами или использует их для нанесения вреда другим лицам или веб-сайтам, которые я упомянул в качестве примера. это просто для обмена знаниями, чтобы помочь вам защитить свой интеллектуальный продукт.
генерировать ссылки с истечением срока действия
Для этого необходимо создать ссылку на скачивание для каждого пользователя. с этим можно легко справиться с помощью хранилища Azure BLOB или Amazon S3. Вы можете создать ссылку для скачивания с двойной отметкой времени окончания видео. тогда вам нужно захватить эту ссылку на видео и время, которое запрашивается. это необходимо для следующего метода. выгода этого метода заключается в том, что вы генерируете ссылку для скачивания, когда пользователь нажимает кнопку воспроизведения.
При нажатии кнопки воспроизведения вы отправите запрос на сервер, получите ссылку и обновите источник.
регулировать частоту запросов видео
Затем вы отслеживаете, насколько быстро пользователь запрашивает второе видео. если пользователь слишком быстро запросит ссылку для скачивания, вы сразу же заблокируете его. Вы не можете установить этот порог слишком большим, потому что вы можете по ошибке заблокировать пользователей, которые просто просматривают или просматривают видео.
Включить диапазон HTTP
используйте для воспроизведения видео некоторую библиотеку js, например videojs , также вам нужно вернуть AcceptRange в заголовок. Хранилище BLOB-объектов Azure поддерживает это "из коробки". Таким образом, браузер начинает загружать видео по частям. обычно 32 байта на 32 байта. Затем вам нужно прослушать timeupdate
изменения videojs и обновить ваш сервер в процентах от просмотра видео. процент просмотра видео не может превышать процент доставки видео. и если вы поставляете видеоконтент без получения процентного изменения, вы можете заблокировать пользователя. потому что наверняка они скачивают.
реализовать это сложно, потому что пользователь может пропустить видео вперед или назад, поэтому имейте это в виду, когда реализуете это.
Вот как BestDotnetTraining обрабатывает timeupdate
myPlayer.ready(function () {
//var player = this;
this.src({
type: "video/mp4",
src: videoURL
});
if (videoId) {
myPlayer.play();
this.on('timeupdate', function () {
var currentPercent = parseInt(100 * myPlayer.currentTime() / myPlayer.duration());//calcualte as percentage
if (currentPercent % 5 == 0) {
//send percentage to server
SaveVideoDurationWatched(currentPercent, videoId);
}
});
}
});
в любом случае, пользователь может обойти это, используя некоторый метод загрузки, который загружает файл через потоковую передачу. почти c # сделать это из коробки, а для nodejs вы можете использовать request
модуль. затем вам нужно запустить секундомер, прослушать полученный пакет и сравнить полученный полученный байт с общим размером. таким образом, вы можете рассчитать процент и время, потраченное на получение этого количества процентов. затем используйте Thread.Sleep()
или что-то в этом роде, чтобы задержать поток на сумму, которую вам придется ждать, если вы смотрите видео нормально. также перед сном пользователь может вызвать сервер и обновить полученный процент. поэтому сервер считает, что пользователь на самом деле смотрит видео.
вычисление будет примерно таким, например, если вы подсчитаете, что вы уже получили 1 процент, то вы можете рассчитать сумму, которую вы должны ждать, чтобы усыпить поток загрузки. таким образом, вы не можете скачать видео быстрее, чем его фактическая длина. если видео 24 мин. загрузка займет 24 минуты. (плюс порог, который мы ставим в первом методе)
original video length 24 minute
24 min *60000 = 1,440,000 miliseconds
1,440,000 % 100 = 14,400 milisecond is needed to download one percent
проверьте браузер агента
когда вы обслуживаете веб-страницу и размещаете ссылку на видео или принимаете запрос на обновление, вы можете обратиться к агенту браузера. если он другой, то забанить пользователя.
просто знайте, что какой-то старый браузер не передает эту информацию. поэтому вы должны игнорировать это, когда агент браузера не присутствует ни в запросе видео, ни в запросе веб-страницы. но если у одного запроса есть, а у другого нет, то вам следует забанить пользователя.
Чтобы обойти это, пользователь может установить заголовок агента браузера вручную так же, как и браузер без монитора, который они используют для захвата ссылки на скачивание.
проверьте заголовок реферера
когда реферер - это что-то отличное от URL вашего хоста или URL страницы, на которой вы размещаете видео, вы можете заблокировать пользователя, потому что он поместил ссылку на скачивание в другую вкладку или другое приложение. даже вы можете сделать это для запроса обновления.
для этого необходимо иметь отображение видео и страницу, которая показывает это видео. Вы можете создать соглашение или шаблон, чтобы понять, каким должен быть URL, это зависит от вашего дизайна.
чтобы обойти это, пользователь может установить заголовок реферера вручную, равный URL страницы загрузки при загрузке видео.
Рассчитать время между запросами
если вы получаете так много запросов, что время между ними одинаково, то вам следует заблокировать пользователя. Вы должны указать это, чтобы узнать, сколько времени проходит между запросом на генерацию видео ссылки. если они одинаковы (плюс / минус некоторый порог) и это происходит более чем несколько раз, то вы можете забанить пользователя. потому что если есть бот, который будет сканировать ваш сайт или видео, то обычно они имеют одинаковое время ожидания между запросами. так что если вы получаете каждый запрос, например, каждые 1,3 (плюс / мин, некоторое отклонение) минуты. тогда вы поднимаете тревогу. для этого вы можете использовать статистический расчет, чтобы узнать отклонение между запросами.
Чтобы обойти это, пользователь может установить произвольное время ожидания между запросами.
образец кода
У меня есть репозиторий PluralSight-Downloader, который делает это на полпути. Я создал этот репо почти 5 лет назад. Поскольку я написал его для учебных целей и только для личного использования, репозиторий до сих пор не получил никаких обновлений, и я не собираюсь обновлять или облегчать работу с ним. это просто пример того, как это можно сделать.