Nun, Sie können es nicht 100% schützen, aber Sie können es schwieriger machen. Diese Methoden, die ich erkläre, habe ich ihnen beim Studium der Schutzmethoden in begegnet PluralSight und BestDotNetTraining kennengelernt . Trotzdem hinderte mich keine dieser Methoden daran, das herunterzuladen, was ich wollte, aber es fiel mir schwer, den Downloader zu kuratieren, um seinen Schutz zu bestehen.
Zusätzlich zu anderen genannten Methoden zum Deaktivieren des Kontextmenüs. Der Benutzer kann weiterhin Tools von Drittanbietern wie InternetDownload Manager oder andere ähnliche Software zum Herunterladen der Videos verwenden. Die hier erläuterte Schutzmethode besteht darin, die Software von Drittanbietern zu verringern.
Die Anforderung all dieser Methoden besteht darin, einen Benutzer zu blockieren, wenn Sie feststellen, dass jemand Ihre Videos herunterlädt. Auf diese Weise können sie nur ein oder zwei Videos herunterladen, bevor Sie ihnen den Zugriff auf Ihre Website untersagt haben.
Haftungsausschluss
Ich übernehme keine Verantwortung, wenn jemand diese Methoden missbraucht oder sie verwendet, um anderen oder den von mir als Beispiel genannten Websites Schaden zuzufügen. Es dient nur dem Wissensaustausch, um Ihr intellektuelles Produkt zu schützen.
Links mit Ablauf generieren
Voraussetzung dafür ist, dass pro Benutzer ein Download-Link erstellt wird. dass man leicht von Azure Blob Storage oder Amazon S3 handhaben kann. Sie können einen Download-Link mit dem doppelten Zeitstempel für das Ablaufen der Videolänge erstellen. Dann müssen Sie diesen Videolink und die angeforderte Zeit erfassen. Dies ist für die nächste Methode erforderlich. Der Haken bei dieser Methode ist, dass Sie den Download-Link generieren, wenn der Benutzer auf die Wiedergabetaste klickt.
Bei einem Play-Button-Ereignis senden Sie eine Anfrage an den Server, erhalten den Link und aktualisieren die Quelle.
Drosseln Sie die Videoanforderungsrate
Anschließend überwachen Sie, wie schnell der Benutzer das zweite Video anfordert. Wenn der Benutzer einen Download-Link zu schnell anfordert, blockieren Sie ihn sofort. Sie können diesen Schwellenwert nicht zu hoch einstellen, da Sie fälschlicherweise Benutzer blockieren können, die nur die Videos durchsuchen oder durchblättern.
Aktivieren Sie den HTTP-Bereich
Verwenden Sie eine js-Bibliothek wie videojs , um Ihr Video abzuspielen. Außerdem müssen Sie einen AcceptRange in Ihrem Header zurückgeben. Der Azure-Blob-Speicher unterstützt dies sofort. Auf diese Weise beginnt der Browser, das Video Stück für Stück herunterzuladen. normalerweise 32 Byte mal 32 Byte. Dann müssen Sie sich die timeupdate
Änderung der Videos anhören und Ihren Server über den Prozentsatz aktualisieren, in dem das Video angesehen wird. Der Prozentsatz, in dem das Video angesehen wird, darf nicht höher sein als der Prozentsatz, in dem das Video geliefert wird. Wenn Sie einen Videoinhalt bereitstellen, ohne eine prozentuale Änderung zu erhalten, können Sie den Benutzer blockieren. weil sie sicher herunterladen.
Die Implementierung ist schwierig, da der Benutzer das Video vorwärts oder rückwärts überspringen kann. Seien Sie sich dessen bewusst, wenn Sie dies implementieren.
So geht BestDotnetTraining mit dem um 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);
}
});
}
});
Auf jeden Fall kann der Benutzer dies umgehen, indem er eine Download-Methode verwendet, mit der eine Datei durch Streaming heruntergeladen wird. fast c # mach es sofort und für nodejs kannst du request
module verwenden. Dann müssen Sie eine stopWatch starten, ein empfangenes Paket anhören und das empfangene Gesamtbyte mit der Gesamtgröße vergleichen. Auf diese Weise können Sie einen Prozentsatz und die Zeit berechnen, die erforderlich ist, um diesen Prozentsatz zu erhalten. Verwenden Sie dann das Thread.Sleep()
oder so etwas, um den Thread um den Betrag zu verzögern, den Sie warten müssen, wenn Sie das Video normal ansehen. Auch vor dem Ruhezustand kann der Benutzer den Server anrufen und den empfangenen Prozentsatz aktualisieren. Der Server glaubt also, dass der Benutzer tatsächlich ein Video ansieht.
Die Berechnung sieht ungefähr so aus. Wenn Sie beispielsweise berechnen, dass Sie bisher 1 Prozent erhalten haben, können Sie den Betrag berechnen, den Sie warten sollten, um den Download-Thread zu beenden. Auf diese Weise können Sie ein Video nicht schneller als die tatsächliche Länge herunterladen. wenn ein Video 24 min ist. Das Herunterladen dauert 24 Minuten. (plus den Schwellenwert, den wir in die erste Methode gesetzt haben)
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
Überprüfen Sie den Browser-Agenten
Wenn Sie eine Webseite und den Videolink bereitstellen oder die Anforderung zur Fortschrittsaktualisierung annehmen, können Sie sich den Browser-Agenten ansehen. Wenn es anders ist, verbieten Sie den Benutzer.
Beachten Sie jedoch, dass einige alte Browser diese Informationen nicht weitergeben. Daher sollten Sie dies ignorieren, wenn sowohl in der Videoanforderung als auch in der Webseitenanforderung kein Browser-Agent vorhanden ist. Wenn eine Anfrage dies hat und eine andere nicht, sollten Sie den Benutzer sperren.
Um dies zu umgehen, kann der Benutzer den Browser-Agent-Header manuell auf den kopflosen Browser einstellen, mit dem er den Download-Link erfasst.
Überprüfen Sie den Referer-Header
Wenn der Referer etwas anderes als Ihre Host-URL oder die Seiten-URL ist, die Sie für das Video bereitstellen, können Sie den Benutzer sperren, da er den Download-Link in einen anderen Tab oder eine andere Anwendung einfügt. Sogar Sie können dies für die Fortschrittsaktualisierungsanforderung tun.
Voraussetzung dafür ist eine Zuordnung des Videos und der Seite, auf der das Video angezeigt wird. Sie können eine Konvention oder ein Muster erstellen, um zu verstehen, wie die URL lauten soll. Es liegt an Ihrem Design.
Um dies zu umgehen, kann der Benutzer den Referrer-Header beim Herunterladen der Videos manuell auf die URL der Download-Seite setzen.
Berechnen Sie die Zeit zwischen den Anforderungen
Wenn Sie so viele Anfragen erhalten, dass die Zeit zwischen ihnen gleich ist, sollten Sie den Benutzer blockieren. Sie sollten dies eingeben, um zu erfassen, wie viel Zeit zwischen der Anforderung zur Generierung von Videolinks liegt. Wenn sie gleich sind (plus / minus eines bestimmten Schwellenwerts) und dies mehr als mehrmals vorkommt, können Sie den Benutzer sperren. Denn wenn es einen Bot gibt, der Ihre Website oder Videos crawlt, haben sie normalerweise die gleiche Ruhezeit zwischen ihren Anfragen. Wenn Sie also jede Anfrage erhalten, zum Beispiel alle 1,3 Minuten (plus / min Abweichung). dann lösen Sie einen Alarm aus. Zu diesem Zweck können Sie eine statistische Berechnung verwenden, um die Abweichung zwischen den Anforderungen zu ermitteln.
Um dies zu umgehen, kann der Benutzer eine zufällige Ruhezeit zwischen die Anforderungen setzen.
Beispielcode
Ich habe einen Repo PluralSight-Downloader , der es auf halbem Weg macht. Ich habe dieses Repo vor fast 5 Jahren erstellt. Da ich es nur zu Studienzwecken und für den persönlichen Gebrauch geschrieben habe, hat das Repo bisher kein Update erhalten und ich werde es nicht aktualisieren oder die Arbeit vereinfachen. Es ist nur ein Beispiel dafür, wie es gemacht werden kann.