cóż, nie możesz tego chronić w 100%, ale możesz to utrudnić. z tymi metodami, które wyjaśniam, zetknąłem się z nimi studiując metody ochrony w PluralSight i BestDotNetTraining . niemniej jednak żadna z tych metod nie powstrzymała mnie przed pobraniem tego, czego chcę, ale trudno mi było wybrać program do pobierania, aby przekazał ich ochronę.
Oprócz innych wymienionych metod, aby wyłączyć menu kontekstowe. użytkownik nadal może korzystać z narzędzi innych firm, takich jak InternetDownload Manager lub inne podobne oprogramowanie, aby pobrać filmy. metoda ochrony, którą tutaj wyjaśniam, polega na złagodzeniu tego oprogramowania innych firm.
Wymóg wszystkich tych metod polega na blokowaniu użytkownika, gdy zidentyfikujesz, że ktoś pobiera Twoje filmy. w ten sposób mogą pobrać tylko jeden lub dwa filmy tylko przed zablokowaniem im dostępu do Twojej witryny.
zrzeczenie się
Nie przyjmuję żadnej odpowiedzialności, jeśli ktoś nadużyje tych metod lub użyje ich do zaszkodzenia innym lub stronom internetowym, o których wspomniałem jako przykład. służy tylko do dzielenia się wiedzą, aby pomóc Ci chronić swój produkt intelektualny.
generować linki z wygaśnięciem
warunkiem jest utworzenie łącza pobierania dla każdego użytkownika. że można go łatwo obsłużyć przez Azure Blob Storage lub Amazon S3. możesz utworzyć łącze pobierania z dwukrotnie dłuższym znacznikiem czasu wygaśnięcia wideo. następnie musisz przechwycić to łącze wideo i żądany czas. jest to konieczne w przypadku następnej metody. Połów tej metody polega na tym, że generujesz łącze pobierania, gdy użytkownik kliknie przycisk odtwarzania.
w przypadku przycisku odtwarzania wyślesz żądanie do serwera, otrzymasz łącze i zaktualizujesz źródło.
ogranicz szybkość żądań wideo
następnie monitorujesz, jak szybko użytkownik żąda drugiego filmu. jeśli użytkownik zażąda linku do pobrania zbyt szybko, blokujesz go od razu. nie możesz ustawić tego progu zbyt wysoko, ponieważ możesz omyłkowo zablokować użytkowników, którzy tylko przeglądają lub przeglądają filmy.
Włącz zakres HTTP
użyj biblioteki js, takiej jak videojs, aby odtworzyć wideo, musisz również zwrócić AcceptRange w nagłówku. Usługa Azure Blob Storage obsługuje to po wyjęciu z pudełka. w ten sposób przeglądarka zaczyna pobierać fragment wideo po fragmencie. zwykle 32 bajty na 32 bajty. Następnie musisz słuchać timeupdate
zmian wideo i aktualizować serwer o procent oglądania wideo. procent obejrzenia filmu nie może być większy niż procent dostarczenia filmu. a jeśli dostarczasz treści wideo bez zmiany procentowej, możesz zablokować użytkownika. bo na pewno pobierają.
implementacja tego jest trudna, ponieważ użytkownik może przeskakiwać wideo do przodu lub do tyłu, więc bądź świadomy tego, kiedy to wdrażasz.
w ten sposób BestDotnetTraining obsługuje 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);
}
});
}
});
w każdym razie użytkownik może obejść ten problem, używając metody pobierania, która pobiera plik za pośrednictwem przesyłania strumieniowego. prawie c # zrób to po wyjęciu z pudełka, a dla nodejs możesz użyć request
module. Następnie musisz uruchomić stopWatch, odsłuchać otrzymaną paczkę i porównać łączną liczbę otrzymanych bajtów z całkowitym rozmiarem. w ten sposób możesz obliczyć procent i czas poświęcony na uzyskanie tej ilości procentu. następnie użyj Thread.Sleep()
lub czegoś podobnego, aby opóźnić wątek o kwotę, którą musisz czekać, jeśli oglądasz wideo normalnie. również przed zaśnięciem użytkownik może zadzwonić do serwera i zaktualizować otrzymaną wartość procentową. więc serwer myśli, że użytkownik faktycznie ogląda wideo.
obliczenie będzie wyglądało mniej więcej tak, na przykład, jeśli obliczysz, że do tej pory otrzymałeś 1 procent, to możesz obliczyć kwotę, którą powinieneś poczekać, aby uśpić wątek pobierania. w ten sposób nie możesz pobrać filmu szybciej niż jego rzeczywista długość. jeśli film trwa 24 min. pobranie go zajmie 24 minuty. (plus próg, który postawiliśmy w pierwszej metodzie)
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
sprawdź agenta przeglądarki
kiedy obsługujesz stronę internetową i udostępniasz łącze wideo lub akceptujesz żądanie aktualizacji postępu, możesz spojrzeć na agenta przeglądarki. jeśli jest inny, zablokuj użytkownika.
pamiętaj tylko, że stara przeglądarka nie przekazuje tych informacji. więc powinieneś to zignorować, gdy nie ma agenta przeglądarki zarówno w żądaniu wideo, jak i żądaniu strony internetowej. ale jeśli jedno żądanie ma to, a inne nie, to powinieneś zbanować użytkownika.
Aby obejść ten problem, użytkownik może ręcznie ustawić nagłówek agenta przeglądarki tak samo, jak w przeglądarce bezgłowej, której używa do przechwytywania łącza pobierania.
sprawdź nagłówek referer
gdy strona odsyłająca jest czymś innym niż adres URL hosta lub adres URL strony, na której serwujesz wideo, możesz zablokować użytkownika, ponieważ umieścił on łącze pobierania w innej karcie lub innej aplikacji. nawet możesz to zrobić dla żądania aktualizacji postępu.
warunkiem jest mapowanie wideo i strony, która pokazuje ten film. możesz stworzyć jakąś konwencję lub wzorzec, aby zrozumieć, jaki powinien być adres URL, to zależy od twojego projektu.
Aby obejść ten problem, użytkownik może ręcznie ustawić nagłówek strony odsyłającej jako równy adresowi URL strony pobierania podczas pobierania filmów.
Oblicz czas między żądaniami
jeśli otrzymujesz tyle żądań, że czas między nimi jest taki sam, powinieneś zablokować użytkownika. Powinieneś to ustawić, aby uchwycić czas między żądaniem wygenerowania łącza wideo. jeśli są takie same (plus / minus pewien próg) i zdarza się to więcej niż kilka razy, możesz zbanować użytkownika. ponieważ jeśli istnieje bot, który ma zaindeksować twoją witrynę lub filmy, zwykle ma taki sam czas snu między swoimi żądaniami. więc jeśli otrzymasz każde żądanie, na przykład co 1,3 (plus / min trochę odchylenia) minuty. wtedy podnosisz alarm. w tym celu możesz użyć obliczeń statystycznych, aby poznać odchylenie między żądaniami.
aby obejść ten problem, użytkownik może ustawić losowy czas uśpienia między żądaniami.
przykładowy kod
Mam repozytorium PluralSight-Downloader, które robi to w połowie. Stworzyłem to repozytorium prawie 5 lat temu. ponieważ napisałem go tylko do celów edukacyjnych i do własnego użytku osobistego, repozytorium nie otrzymało dotychczas żadnych aktualizacji i nie zamierzam aktualizować ani ułatwiać pracy z nim. to tylko przykład tego, jak można to zrobić.