bueno, no puedes protegerlo al 100% pero puedes hacerlo más difícil. Estos métodos que estoy explicando los enfrenté durante el estudio de los métodos de protección en PluralSight y BestDotNetTraining . sin embargo, ninguno de estos métodos me impidió descargar lo que quiero, pero tuve dificultades para seleccionar al descargador para que pasara su protección.
Además de otros métodos mencionados para deshabilitar el menú contextual. el usuario aún puede usar herramientas de terceros como InternetDownload manager u otro software similar para descargar los videos. El método de protección que estoy explicando aquí es mitigar el software de terceros.
El requisito de todos estos métodos es bloquear a un usuario cuando identifica que alguien está descargando sus videos. de esta manera, solo pueden descargar uno o dos videos antes de que les prohibiera el acceso a su sitio web.
Descargo de responsabilidad
No aceptaré ninguna responsabilidad si alguien abusa de estos métodos o lo usa para dañar a otros o los sitios web que mencioné como ejemplo. es solo para compartir conocimientos para ayudarlo a proteger su producto intelectual.
generar enlaces con vencimiento
El requisito para esto es crear un enlace de descarga por usuario. ese puede ser fácilmente manejado por azure blob storage o amazon s3. puede crear un enlace de descarga con el doble de la marca de tiempo de caducidad del video. entonces necesita capturar ese enlace de video y el tiempo que se solicita. Esto es necesario para el siguiente método. El problema con este método es que está generando el enlace de descarga cuando el usuario hace clic en el botón Reproducir.
En el evento de botón de reproducción, enviará una solicitud al servidor y obtendrá el enlace y actualizará la fuente.
acelerar la tasa de solicitud de video
luego monitorea qué tan rápido solicita el usuario el segundo video. si el usuario solicita un enlace de descarga demasiado rápido, los bloquea de inmediato. no puede poner este umbral demasiado grande porque puede bloquear por error a los usuarios que solo están navegando o hojeando los videos.
Habilitar rango HTTP
use una biblioteca js como videojs para reproducir su video, también debe devolver un AcceptRange en su encabezado. Azure Blob Storage lo admite de forma inmediata. de esta manera, el navegador comienza a descargar el video fragmento por fragmento. generalmente, 32byte por 32byte. entonces debe escuchar el timeupdate
cambio de videojs y actualizar su servidor sobre el porcentaje de reproducción del video. el porcentaje que se ve el video no puede ser mayor que el porcentaje que se entrega el video. y si está entregando un contenido de video sin recibir ningún cambio porcentual, puede bloquear al usuario. porque seguro que se están descargando.
implementar esto es complicado porque el usuario puede omitir el video hacia adelante o hacia atrás, así que tenga en cuenta esto cuando lo implemente.
así es como BestDotnetTraining está manejando el 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 todos modos, el usuario puede solucionar esto utilizando algún método de descarga que descargue un archivo a través de la transmisión. casi c # lo hace fuera de la caja y para nodejs, puede usar el request
módulo. entonces debe iniciar un cronómetro, escuchar un paquete recibido y comparar el byte total recibido en comparación con el tamaño total. de esta manera puede calcular un porcentaje y el tiempo empleado para obtener esa cantidad de porcentaje. luego use Thread.Sleep()
o algo así para retrasar el hilo la cantidad que tiene que esperar si mira el video normalmente. también antes de la suspensión, el usuario puede llamar al servidor y actualizar el porcentaje que se recibe. entonces el servidor piensa que el usuario realmente está viendo un video.
el cálculo será algo como esto, por ejemplo, si calcula que recibió el 1 por ciento hasta ahora, puede calcular la cantidad que debe esperar para dormir el hilo de descarga. de esta manera no puede descargar un video más rápido de lo que es su duración real. si un video es de 24 min. Tardará 24 minutos en descargarlo. (más el umbral que ponemos en el primer método)
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
verifique el agente del navegador
cuando está sirviendo una página web y sirviendo el enlace del video o aceptando la solicitud de actualización de progreso, puede mirar al agente del navegador. si es diferente, entonces prohíba al usuario.
solo tenga en cuenta que algunos navegadores antiguos no pasan esta información. por lo tanto, debe ignorar esto cuando no haya un agente de navegador tanto en la solicitud de video como en la solicitud de página web. pero si una solicitud la tiene y otra no, entonces debe prohibir al usuario.
Para solucionar este problema, el usuario puede configurar el encabezado del agente del navegador manualmente igual que el navegador sin cabeza que está utilizando para capturar el enlace de descarga.
verifique el encabezado del árbitro
cuando el árbitro no es la URL de su host o la URL de la página a la que está enviando el video, puede prohibir al usuario, ya que coloca el enlace de descarga en otra pestaña u otra aplicación. incluso puede hacerlo para la solicitud de actualización de progreso.
el requisito para esto es tener una asignación de video y la página que muestra ese video. puede crear alguna convención o patrón para comprender cuál debería ser la URL, depende de su diseño.
para evitarlo, el usuario puede establecer el encabezado de referencia de forma manual igual a la URL de la página de descarga al descargar los videos.
Calcule el tiempo entre solicitudes
Si recibe tantas solicitudes que el tiempo entre ellas es el mismo, debe bloquear al usuario. debe poner esto para capturar cuánto tiempo transcurre entre la solicitud de generación de enlace de video. si son iguales (más / menos algún umbral) y ocurre más de una cantidad de veces, puede prohibir al usuario. porque si hay un robot que va a rastrear su sitio web o videos, entonces generalmente tienen el mismo tiempo de sueño entre su solicitud. así que si recibe cada solicitud, por ejemplo, cada 1.3 minutos (más / minutos de alguna desviación). Entonces levantas la alarma. para esto, puede usar algunos cálculos estadísticos para conocer la desviación entre las solicitudes.
Para solucionar esto, el usuario puede poner un tiempo de suspensión aleatorio entre las solicitudes.
Código de muestra
Tengo un repositorio PluralSight-Downloader que lo está haciendo a mitad de camino. Creé este repositorio hace casi 5 años. porque lo escribí solo para fines de estudio y para uso personal, el repositorio no ha recibido ninguna actualización hasta el momento y no voy a actualizar ni facilitar el trabajo. Es solo un ejemplo de cómo se puede hacer.