bene, non puoi proteggerlo al 100% ma puoi renderlo più difficile. questi metodi che sto spiegando, li ho affrontati durante lo studio dei metodi di protezione in PluralSight e BestDotNetTraining . tuttavia, nessuno di questi metodi mi ha impedito di scaricare ciò che voglio, ma ho avuto difficoltà a curare il downloader per passare la loro protezione.
Oltre agli altri metodi citati per disabilitare il menu di scelta rapida. l'utente è ancora in grado di utilizzare strumenti di terze parti come InternetDownload Manager o altri software simili per scaricare i video. il metodo di protezione che sto spiegando qui è quello di mitigare quei software di terze parti.
il requisito di tutti questi metodi è bloccare un utente quando identifichi che qualcuno sta scaricando i tuoi video. in questo modo sono in grado di scaricare solo uno o due video solo prima che tu abbia vietato loro di accedere al tuo sito web.
disconoscimento
Non accetterò alcuna responsabilità se qualcuno abusa di questi metodi o lo usa per danneggiare altri o i siti Web che ho citato come esempio. serve solo a condividere le conoscenze per aiutarti a proteggere il tuo prodotto intellettuale.
generare collegamenti con una scadenza
il requisito per questo è creare un collegamento per il download per utente. quello può essere facilmente gestito da un archivio BLOB BLU o da Amazon S3. puoi creare un link per il download con il doppio del timestamp di scadenza della durata del video. quindi è necessario acquisire quel collegamento video e l'ora richiesta. questo è necessario per il metodo successivo. il trucco per questo metodo è che stai generando il link di download quando l'utente fa clic sul pulsante di riproduzione.
in caso di pulsante Play, invierai una richiesta al server, otterrai il link e aggiornerai la fonte.
limitare il tasso di richiesta video
quindi monitora la velocità con cui l'utente richiede il secondo video. se l'utente richiede un collegamento per il download troppo velocemente, lo blocchi immediatamente. non puoi impostare questa soglia troppo grande perché puoi erroneamente bloccare gli utenti che stanno solo navigando o scorrendo i video.
Abilita intervallo HTTP
utilizzare alcune librerie js come videojs per riprodurre il video, inoltre è necessario restituire un AcceptRange nell'intestazione. L'archiviazione BLOB di Azure lo supporta immediatamente. in questo modo il browser inizia a scaricare il video pezzo per pezzo. di solito, 32 byte per 32 byte. quindi è necessario ascoltare la timeupdate
modifica dei videojs e aggiornare il server sulla percentuale di visualizzazione del video. la percentuale di visualizzazione del video non può essere superiore alla percentuale di consegna del video. e se stai distribuendo un contenuto video senza ricevere alcuna variazione percentuale, puoi bloccare l'utente. perché sicuramente stanno scaricando.
l'implementazione è complicata perché l'utente può saltare il video in avanti o indietro, quindi sii consapevole di ciò quando lo stai implementando.
questo è il modo in cui BestDotnetTraining gestisce 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);
}
});
}
});
in ogni caso, l'utente è in grado di aggirare il problema utilizzando un metodo di download che scarica un file tramite streaming. quasi c # fallo fuori dalla scatola e per nodejs, puoi usare request
module. quindi è necessario avviare uno stopwatch, ascoltare un pacchetto ricevuto e confrontare il byte totale ricevuto confrontarlo con la dimensione totale. in questo modo è possibile calcolare una percentuale e il tempo impiegato per ottenere tale percentuale. quindi usa il Thread.Sleep()
o qualcosa del genere per ritardare la discussione della quantità che devi aspettare se guardi il video normalmente. anche prima della sospensione l'utente può chiamare il server e aggiornare la percentuale ricevuta. quindi il server pensa che l'utente stia effettivamente guardando un video.
il calcolo sarà simile a questo, ad esempio, se si calcola di aver ricevuto finora l'1%, è possibile calcolare l'importo che si dovrebbe attendere per sospendere il thread di download. in questo modo non è possibile scaricare un video più velocemente della sua lunghezza effettiva. se un video è di 24 min. ci vorranno 24 minuti per scaricarlo. (più la soglia che abbiamo inserito nel primo metodo)
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
controlla l'agente del browser
quando offri una pagina web e il collegamento al video o accetti la richiesta di aggiornamento dell'avanzamento puoi guardare l'agente del browser. se è diverso, quindi vietare l'utente.
tieni presente che alcuni vecchi browser non trasmettono queste informazioni. quindi dovresti ignorarlo quando non c'è nessun agente browser sia nella richiesta video che nella richiesta pagina web. ma se una richiesta ce l'ha e un'altra no, allora dovresti vietare all'utente.
per ovviare a questo, l'utente può impostare l'intestazione dell'agente del browser manualmente come il browser senza testa che stanno utilizzando per acquisire il collegamento di download.
controlla l'intestazione del referer
quando il referer è diverso dall'URL dell'host o dall'URL della pagina in cui si sta offrendo il video, è possibile vietare l'utente perché inserisce il collegamento di download in un'altra scheda o in un'altra applicazione. anche tu puoi farlo per la richiesta di aggiornamento dell'avanzamento.
il requisito per questo è avere una mappatura del video e la pagina che mostra quel video. puoi creare una convenzione o un modello per capire quale dovrebbe essere l'URL, dipende dal tuo design.
per aggirare il problema l'utente può impostare manualmente l'intestazione del referrer uguale all'URL della pagina di download durante il download dei video.
Calcola il tempo tra una richiesta e l'altra
se ricevi così tante richieste che il tempo tra loro è lo stesso, allora dovresti bloccare l'utente. dovresti metterlo per catturare quanto tempo intercorre tra la richiesta di generazione del collegamento video. se sono uguali (più / meno una soglia) e succede più di un numero di volte, puoi vietare l'utente. perché se esiste un bot che eseguirà la scansione del tuo sito Web o dei tuoi video, di solito hanno lo stesso tempo di sospensione tra la loro richiesta. quindi se ricevi ogni richiesta, ad esempio, ogni 1,3 (più / min qualche deviazione) minuti. poi si genera un allarme. per questo, è possibile utilizzare alcuni calcoli statistici per conoscere la deviazione tra le richieste.
per ovviare a questo, l'utente può inserire un tempo di sospensione casuale tra le richieste.
codice di esempio
Ho un repository PluralSight-Downloader che lo sta facendo a metà. Ho creato questo repository quasi 5 anni fa. poiché l'ho scritto solo a scopo di studio e per uso personale, finora il repository non ha ricevuto alcun aggiornamento e non ho intenzione di aggiornarlo o semplificarlo. è solo un esempio di come si può fare.