Eh bien, vous ne pouvez pas le protéger à 100%, mais vous pouvez le rendre plus difficile. ces méthodes que j'explique , je les ai affrontées lors de l'étude des méthodes de protection dans PluralSight et BestDotNetTraining . néanmoins, aucune de ces méthodes ne m'a empêché de télécharger ce que je veux, mais j'ai eu du mal à organiser le téléchargeur pour passer sa protection.
En plus d'autres méthodes mentionnées pour désactiver le menu contextuel. l'utilisateur peut toujours utiliser des outils tiers comme InternetDownload Manager ou un autre logiciel similaire pour télécharger les vidéos. la méthode de protection que j'explique ici est d'atténuer ces logiciels tiers.
l'exigence de toutes ces méthodes est de bloquer un utilisateur lorsque vous identifiez quelqu'un qui télécharge vos vidéos. de cette façon, ils ne peuvent télécharger qu'une ou deux vidéos uniquement avant que vous ne leur interdisiez d'accéder à votre site Web.
avertissement
Je n'accepterai aucune responsabilité si quelqu'un abuse de ces méthodes ou les utilise pour nuire à d'autres ou aux sites Web que j'ai mentionnés à titre d'exemple. c'est juste pour partager des connaissances pour vous aider à protéger votre produit intellectuel.
générer des liens avec une expiration
la condition requise pour cela est de créer un lien de téléchargement par utilisateur. celui-ci peut facilement être géré par le stockage blob azure ou amazon s3. vous pouvez créer un lien de téléchargement avec deux fois l'horodatage d'expiration de la durée de la vidéo. Ensuite, vous devez capturer ce lien vidéo et l'heure demandée. cela est nécessaire pour la méthode suivante. le hic pour cette méthode est que vous générez le lien de téléchargement lorsque l'utilisateur clique sur le bouton de lecture.
lors de l'événement du bouton de lecture, vous enverrez une demande au serveur, obtenez le lien et mettez à jour la source.
réduire le taux de demande de vidéo
puis vous surveillez la vitesse à laquelle l'utilisateur demande la deuxième vidéo. si l'utilisateur demande un lien de téléchargement trop rapidement, vous le bloquez immédiatement. vous ne pouvez pas mettre ce seuil trop grand car vous pouvez bloquer par erreur les utilisateurs qui ne font que parcourir ou parcourir les vidéos.
Activer la plage HTTP
utilisez une bibliothèque js comme videojs pour lire votre vidéo, vous devez également renvoyer un AcceptRange dans votre en-tête. Le stockage d'objets blob Azure prend en charge cela par défaut. de cette façon, le navigateur commence à télécharger la vidéo morceau par morceau. généralement, 32 octets par 32 octets. alors vous devez écouter le timeupdate
changement de videojs et mettre à jour votre serveur sur le pourcentage de visionnage de la vidéo. le pourcentage de visionnage de la vidéo ne peut pas être supérieur au pourcentage de diffusion de la vidéo. et si vous diffusez un contenu vidéo sans recevoir de changement de pourcentage, vous pouvez bloquer l'utilisateur. parce que c'est sûr qu'ils téléchargent.
l'implémentation est délicate car l'utilisateur peut sauter la vidéo en avant ou en arrière, alors soyez conscient de cela lorsque vous l'implémentez.
c'est ainsi que BestDotnetTraining gère le 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);
}
});
}
});
de toute façon, l'utilisateur est capable de contourner ce problème en utilisant une méthode de téléchargement qui télécharge un fichier via le streaming. presque c # faites-le hors de la boîte et pour nodejs, vous pouvez utiliser request
module. Ensuite, vous devez démarrer un chronomètre, écouter un paquet reçu et comparer l'octet total reçu par rapport à la taille totale. de cette façon, vous pouvez calculer un pourcentage et le temps passé pour obtenir ce pourcentage. puis utilisez le Thread.Sleep()
ou quelque chose comme ça pour retarder le thread le montant que vous devez attendre si vous regardez la vidéo normalement. également avant la mise en veille, l'utilisateur peut appeler le serveur et mettre à jour le pourcentage reçu. donc le serveur pense que l'utilisateur regarde réellement une vidéo.
le calcul sera quelque chose comme ceci, par exemple, si vous calculez que vous avez reçu 1 pour cent jusqu'à présent, vous pouvez calculer le montant que vous devez attendre pour dormir le fil de téléchargement. de cette façon, vous ne pouvez pas télécharger une vidéo plus rapidement que sa longueur réelle. si une vidéo dure 24 min. il faudra 24 minutes pour le télécharger. (plus le seuil que nous avons mis dans la première méthode)
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
vérifier l'agent du navigateur
lorsque vous diffusez une page Web et que vous diffusez le lien vidéo ou que vous acceptez la demande de mise à jour de progression, vous pouvez consulter l'agent du navigateur. si c'est différent, bannissez l'utilisateur.
sachez simplement qu'un ancien navigateur ne transmet pas ces informations. vous devez donc l'ignorer lorsqu'il n'y a pas d'agent de navigateur dans la requête vidéo et la requête de page Web. mais si une demande l'a et une autre pas, alors vous devriez bannir l'utilisateur.
pour contourner ce problème, l'utilisateur peut définir manuellement l'en-tête de l'agent du navigateur comme le navigateur sans tête qu'il utilise pour capturer le lien de téléchargement.
vérifier l'en-tête du référent
lorsque le référent est autre chose que votre URL hôte ou l'URL de la page sur laquelle vous diffusez la vidéo, vous pouvez bannir l'utilisateur, car il place le lien de téléchargement dans un autre onglet ou une autre application. même vous pouvez le faire pour la demande de mise à jour de progression.
la condition pour cela est d'avoir un mappage de la vidéo et la page qui montre cette vidéo. vous pouvez créer une convention ou un modèle pour comprendre ce que devrait être l'URL, cela dépend de votre conception.
pour contourner ce problème, l'utilisateur peut définir manuellement l'en-tête du référent égal à l'URL de la page de téléchargement lors du téléchargement des vidéos.
Calculez le temps entre les demandes
si vous recevez tellement de demandes que le temps entre elles est le même, vous devez bloquer l'utilisateur. vous devez mettre cela pour capturer le temps écoulé entre la demande de génération de lien vidéo. s'ils sont identiques (plus / moins un certain seuil) et que cela se produit plus d'un certain nombre de fois, vous pouvez bannir l'utilisateur. car s'il y a un bot qui va explorer votre site Web ou vos vidéos, ils ont généralement le même temps de sommeil entre leur demande. donc si vous recevez chaque demande, par exemple, toutes les 1,3 (plus / min un écart) minutes. puis vous déclenchez une alarme. pour cela, vous pouvez utiliser un calcul statistique pour connaître l'écart entre les demandes.
pour contourner ce problème, l'utilisateur peut mettre un temps de sommeil aléatoire entre les demandes.
exemple de code
J'ai un repo PluralSight-Downloader qui le fait à moitié. J'ai créé ce repo il y a presque 5 ans. parce que je l'ai écrit à des fins d'étude et pour mon usage personnel uniquement, le dépôt n'a pas encore reçu de mise à jour et je ne vais pas le mettre à jour ou le rendre facile à travailler. ce n'est qu'un exemple de la façon dont cela peut être fait.