ну, ви не можете захистити його на 100%, але ви можете зробити це важче. ці методи, які я пояснюю , я стикався з ними під час вивчення методів захисту в PluralSight та BestDotNetTraining . тим не менше, жоден із цих методів не заважав мені завантажувати те, що я хочу, але мені було важко вилікувати завантажувача, щоб пройти їх захист.
Окрім інших згаданих методів відключення контекстного меню. Користувач все ще може використовувати сторонні інструменти, такі як InternetDownload Manager або інше подібне програмне забезпечення для завантаження відео. метод захисту, який я тут пояснюю, - це пом’якшити ці програмні продукти сторонніх виробників.
вимога всіх цих методів полягає в блокуванні користувача, коли ви виявите, хтось завантажує ваші відео. таким чином вони можуть завантажувати лише одне чи два відео лише до того, як ви заборонили їм доступ до вашого веб-сайту.
відмова від відповідальності
Я не беру на себе ніякої відповідальності, якщо хтось зловживає цими методами або використовує їх для шкоди іншим або веб-сайтам, які я згадав як приклад. це просто обмін знаннями, щоб допомогти вам захистити свій інтелектуальний продукт.
генерувати зв’язки із закінченням терміну дії
вимога до цього полягає у створенні посилання для завантаження на кожного користувача. з цим можна легко впоратися із зберіганням блакитного блобу або amazon s3. ви можете створити посилання для завантаження з подвійною часовою міткою тривалості відео. то вам потрібно зафіксувати це відеопосилання та час, який вимагається. це необхідно для наступного методу. Привід цього методу полягає в тому, що ви створюєте посилання для завантаження, коли користувач натискає кнопку відтворення.
при події кнопки відтворення ви надішлете запит на сервер і отримаєте посилання та оновите джерело.
зменшити швидкість запиту на відео
то ви відстежуєте, наскільки швидко запит користувача на друге відео. якщо користувач запитує посилання на завантаження занадто швидко, то ви їх відразу блокуєте. ви не можете встановити цей поріг занадто великим, оскільки ви можете помилково заблокувати користувачів, які просто переглядають або сканують відео.
Увімкнути діапазон HTTP
для відтворення відео використовуйте деяку бібліотеку js, як videojs , також вам потрібно повернути AcceptRange у своєму заголовку. Зберігання блошів Azure підтримує це нестандартно. таким чином браузер починає завантажувати відеоролик за допомогою чанку. зазвичай 32 байт на 32 байт. то вам потрібно прослухати timeupdate
зміну відео-відео та оновити ваш сервер про відсоток перегляду відео. відсоток перегляду відео не може бути більшим, ніж відсоток доставки відео. і якщо ви доставляєте відеовміст, не отримуючи жодної відсоткової зміни, ви можете заблокувати користувача. тому що точно вони завантажують.
реалізація цього є складним, оскільки користувач може пропускати відео вперед або назад, тому будьте в курсі цього, коли ви реалізуєте це.
ось так обробляє 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-адресі сторінки завантаження при завантаженні відео.
Обчисліть час між запитом
якщо ви отримуєте стільки запитів, що час між ними однаковий, то вам слід заблокувати користувача. Ви повинні поставити це, щоб зафіксувати скільки часу проходить між запитом на створення відеопосилання. якщо вони однакові (плюс / мінус деякий поріг) і трапляється більше разів, то ви можете заборонити користувача. тому що якщо є бот, який збирається сканувати ваш веб-сайт або відео, зазвичай вони мають однаковий час сну між їх запитом. тому якщо ви отримуєте кожен запит, наприклад, кожні 1,3 хвилини (плюс / хв. деяке відхилення). то ти піднімаєш тривогу. для цього можна скористатися деяким статистичним розрахунком, щоб знати відхилення між запитами.
Щоб вирішити це, користувач може помістити випадковий час сну між запитами.
зразок коду
У мене є репо PluralSight-Downloader, який робить це на півдорозі. Я створив це репо майже 5 років тому. оскільки я написав це лише для навчальних цілей і для особистого користування, до цього часу репо не отримував жодного оновлення, і я не збираюсь його оновлювати чи полегшувати роботу. це лише приклад того, як це можна зробити.