Vous ne pouvez pas . C'est parce que c'est ce pour quoi les navigateurs ont été conçus : Servir le contenu . Mais vous pouvez rendre le téléchargement plus difficile .
Tout d'abord, vous pourrait désactiver le contextmenu
événement alias "le clic droit". Cela empêcherait votre skiddie habituel de déchirer ouvertement votre vidéo en faisant un clic droit et en l'enregistrant sous. Mais alors ils pourraient simplement désactiver JS et contourner ce problème ou trouver la source de la vidéo via le débogueur du navigateur. De plus, c'est une mauvaise ergonomie. Il y a beaucoup d'autres choses légitimes dans un menu contextuel que juste Enregistrer sous.
Vous pouvez également utiliser des bibliothèques de lecteurs vidéo personnalisées. La plupart d'entre elles mettent en œuvre des lecteurs vidéo qui personnalisent le menu contextuel à votre convenance. Ainsi, vous n'obtenez pas le menu contextuel par défaut du navigateur. Et si jamais ils proposent un élément de menu similaire à Enregistrer sous, vous pouvez le désactiver. Mais là encore, il s'agit d'une solution de contournement JS. Les faiblesses sont similaires à celles de l'option précédente.
Une autre façon de procéder est de servir la vidéo en utilisant Diffusion en direct par HTTP . Il s'agit essentiellement de découper la vidéo en morceaux et de les servir l'un après l'autre. C'est ainsi que la plupart des sites de streaming diffusent les vidéos. Ainsi, même si vous parvenez à enregistrer sous, vous ne sauvegardez qu'un morceau, et non la vidéo entière. Il faudrait un peu plus d'efforts pour rassembler tous les morceaux et les assembler à l'aide d'un logiciel spécialisé.
Une autre technique consiste à peinture <video>
sur <canvas>
. Dans cette technique, avec un peu de JavaScript, ce que vous voyez sur la page est une <canvas>
qui rend les images d'un élément caché <video>
. Et parce que c'est un <canvas>
le menu contextuel utilisera un <img>
et non un <video>
's. Vous obtiendrez un enregistrement d'image sous au lieu d'un enregistrement de vidéo sous.
Vous pouvez également utiliser Jetons CSRF à votre avantage. Votre serveur envoie un jeton sur la page. Vous utilisez ensuite ce jeton pour récupérer votre vidéo. Votre serveur vérifie s'il s'agit d'un jeton valide avant de servir la vidéo, ou reçoit un HTTP 401 . L'idée est que vous ne pouvez obtenir une vidéo que si vous disposez d'un jeton que vous ne pouvez obtenir que si vous venez de la page, sans visiter directement l'url de la vidéo.
En fin de compte, je téléchargerais simplement ma vidéo sur un site vidéo tiers, comme YouTube ou Vimeo. Ils ont de bons outils de gestion de la vidéo, optimisent la lecture sur l'appareil et s'efforcent d'empêcher le piratage de leurs vidéos, sans aucun effort de votre part.
3 votes
J'ai voté pour cette question parce qu'elle ne demande absolument pour savoir comment "désactiver le clic droit" pour une vidéo HTML5. Je ne sais pas si c'est similaire à la désactivation du clic droit pour les images normales ou s'il y a d'autres astuces de superposition, etc. qui peuvent être appliquées.
11 votes
Même si vous désactivez le clic droit, ils peuvent toujours l'enregistrer à partir du menu du navigateur (
FileSave As
). Même si vous pouviez bloquer ça, ils peuvent vue-source pour trouver l'URL du fichier. Même si vous pouvez l'obscurcir un peu, ils peuvent l'extraire du cache. Même si vous pouvez compliquer cela (par exemple, le streaming), ils peuvent capturer le trafic réseau avec un renifleur ou autre. Le fait est que si vous l'envoyez à un utilisateur, il peut l'enregistrer. Il n'y a aucun moyen de contourner cela. La question que vous devez vous poser est de savoir pourquoi vous avez tant besoin de l'arrêter. Est-ce vraiment nécessaire ? Cela vaut-il la peine de faire des efforts et d'être peu convivial ?0 votes
Je préfère la réponse TxRegex comme solution de base rapide.
0 votes
Je vais avoir l'air pédant ici, mais vous surchargez le terme "téléchargement". Bien sûr, vous veulent pour permettre le téléchargement de la vidéo.