2009-11-24 11 views
10

¿Es posible proteger un video de un sitio para que no se descargue?¿Es posible proteger de la descarga de un video de un sitio

Mientras que los usuarios pueden grabar un video usando algún dispositivo de hardware, no debería ser posible descargar un video usando algún enlace, exactamente como los videos de Google.

Por ejemplo, si tengo Real One Player en mi sistema, tengo la opción de descargar el video; esto debe ser restringido.

+23

Puede proteger su video si no permite que los usuarios lo vean. –

+0

no .. mis usuarios pueden ver el video. pero no deben poder descargar ese video – Fero

+11

Cuando le permite a sus usuarios mirar el video, eso significa que usted envía sus bytes a los usuarios. Entonces pueden guardar y mirarlo una y otra vez. Puede hacer algunos trucos para ocultar o codificar su url/datos de video, pero no se olvide: puede correr pero no puede escapar :) –

Respuesta

57

Sí. Nunca se lo muestres a nadie. Tan pronto como lo haga, todas las apuestas estarán desactivadas (para obtener una respuesta menos paranoica, consulte el último párrafo).

Este es el problema común con la protección contra copia: no se puede, de ninguna manera, distinguir entre un usuario legítimo y un adversario (ya que incluso pueden ser la misma persona).

Edición: Re "mis usuarios pueden capaz de ver el vídeo, pero no deben ser capaces de descargar ese vídeo" Vamos a tratar de desmontar este:

  • el usuario hace clic con el ratón en su reproductor de " Play"
  • el clic pasa por el sistema operativo del ordenador al reproductor
  • el jugador envía una solicitud a través de la red 'enviarme teh videos' a su servidor
  • (esto, por definición, requiere que la solicitud va a través de cualquier red La pila de la computadora del usuario tiene)
  • El servidor, si decide que es un jugador legítimo, comienza a enviar datos a la computadora del usuario.
  • (esto, también por definición, significa, que el equipo del usuario se "descarga" los datos)
  • * los datos llega a través de la red en el ordenador (aunque la captura de los datos en esta etapa es más práctico para el NSA que para un usuario)
  • * el sistema operativo maneja las capas de datos inferiores (es decir, "este es un paquete de datos, desde $ yourserver a mí y debe pasarse a $ yourapp")
  • * el sistema operativo pasa los datos a la aplicación que lo solicitó
  • el jugador recibe los datos
  • * el jugador se transforma los datos en una secuencia de imágenes (a.k.a. un video) y una pista de sonido
  • * el jugador envía las imágenes al subsistema de visualización del sistema operativo, o guarda en el disco
  • * el sistema de visualización transforma las imágenes en un formato de la pantalla entiende
  • * las imágenes fluyen a través de un cable en la pantalla
  • * las imágenes se visualizan en la pantalla (momento en el que se aproximan a la computadora en forma de luz)
  • la luz llega a los ojos del usuario

el vídeo puede ser interceptada (y/o mo dified) en cada punto marcado con * (aunque la calidad de la copia puede disminuir, esp. al capturar la salida analógica). A menos que de alguna manera pueda eliminar a todos y cada uno de ellos (buena suerte con el último), todo lo que puede hacer es hacer que la captura/transformación de datos sea más compleja. Hay toda una industria construida alrededor de estos "puntos débiles" (google "stream ripping" para ver por ti mismo).

Puede complicar la captura con varias tecnologías DRM, pero al final, la secuencia de datos debe convertirse en video analógico y audio analógico (a.k.a., luz y sonido) en alguna parte.

Sin embargo, si no le importa que un usuario determinado se derivación de su protección, y si es suficiente para proteger el vídeo desde el 90% de los usuarios, creo que los formatos reales que se mencionan tienen algunas marca "no permitir guardar". Esto desactivará la opción "guardar como" en el reproductor (es decir, la opción "o la guarda en el disco" más arriba); para la mayoría de los usuarios, esta será una barrera lo suficientemente significativa. Cualquier cosa más probablemente incomode e irrite al 100% de los usuarios, sin proporcionar una protección significativamente mayor.

+0

no .. mis usuarios pueden ver el video. pero no deben poder descargar ese video – Fero

+0

Esto es tan trivial Me sorprende que tenga que ser explicado a las personas. –

+2

Trivial, tal vez. Obvio, no realmente. – Piskvor

3

Para ser por adelantado, nada es a prueba de balas. Por cada medida de protección desarrollada, alguien ha encontrado la manera de vencerla. Sin embargo, puede tomar algunas medidas para detener (o al menos ralentizar) al usuario ocasional.

La plataforma Real Networks ofrece bastantes opciones para proteger el contenido, la más segura generalmente es la transmisión en vivo o bajo demanda.

Para darle instrucciones específicas, necesitaremos más información, sin embargo. Usted menciona que Real One Player está dando una opción 'guardar'. Puede jugar en varios formatos. ¿Qué tipo de archivo estás publicando (Real, WMV, etc.) y cómo se sirve actualmente (enlace, inserción, transmisión)?

13

Si los ojos del usuario pueden ver el video, el dispositivo de grabación del usuario también puede ver el video. No existe, ni existirá, una forma de evitar que los usuarios graben el contenido que están viendo/escuchando. Es un problema sin solución.

+2

Sí, este es un problema interesante porque si no toma precauciones, el lego simplemente puede hacer clic en 'Guardar como'. Si toma algunas precauciones, el experto en tecnología encontrará a su alrededor, pero incluso si toma muchas precauciones, el lego puede simplemente configurar una cámara de video o una aplicación de captura de pantalla. – LoveMeSomeCode

+11

Lo más importante a tener en cuenta, por supuesto, es que cualquier "precaución" que tomes puede enfurecer a tus usuarios, que solo quieren * ver el maldito video *. –

+1

Sí, realmente hace que cuestiones todo el proceso. quieres que lo vean, pero no quieres que lo vean más tarde? Si se debe a que tiene toneladas de anuncios en toda su página, supongo que podría incluir anuncios en el video, aunque sería un poco más difícil obtener clics. – LoveMeSomeCode

1

Fero, este es un tema que muchas grandes empresas de entretenimiento enfrentan cada día. "¿Pero cómo puedo evitar que la gente copie mis cosas"?

Puede difícil, pero a medida que las personas difíciles de ver, las personas son menos propensos a usar su sistema a menos que nos proporciona la información más importante que han visto nunca. Si un login barrier es una preocupación, imagine forzar a las personas a usar Real Player.

Tratar de que sus videos sean famosos y relevantes es mejor que intentar encriptar a cualquier costo antes de que son importantes.

6

Si los usuarios pueden "mirar" un video, siempre pueden encontrar la manera de guardarlo en el disco. Puede marcar con agua un mensaje de derechos de autor sobre sus videos, pero me temo que eso es todo.

3

Es imposible evitar efectivamente que un usuario guarde su video de una forma u otra. Una desesperada podría grabar todo el contenido de la pantalla mientras se está reproduciendo.

5

Es imposible evitar que se descargue un video. Para que el video se muestre en la pantalla, los bits que componen el video deben transmitirse a la PC del usuario, sobre la que no tiene control.

Todo lo que puede hacer es dificultarlo.

Por ejemplo, use css para mostrar una imagen transparente sobre el video para dificultar hacer clic derecho en el video y ver sus propiedades (Flickr do with with pictures).

O use html/javascript ofuscado para dificultar que un usuario vea View-> Source.Pero un usuario suficientemente determinado podría desenfocarlo, y no puede deshabilitar View-> Source porque no posee la pc del usuario.

Puede ir más allá y utilizar un formato de archivo de video personalizado (secreto) y un plugin de navegador, o utilizar un cliente de reproducción independiente de estilo realmedia. Sin embargo, es probable que estos molesten a los usuarios y no impiden que alguien aplique ingeniería inversa a su protocolo/formato y escriba su propio cliente para suplantar el navegador y guardar el video en un formato estándar.

¡No abogo por hacer ninguna de las anteriores!

En pocas palabras: debe enviar los bits a la pc del usuario, y una vez que lo haga, perderá todo el control sobre ellos.

4

@Fero

En lugar de poner su video en el sitio web, el programa de instalación de escritorio remoto en su ordenador personal.

cuenta Inicia sesión abierta para cada usuario de forma manual, y dejar que los usuarios de inicio de sesión,

y dejar que los usuarios ver sus películas a través de él, y

También ellos pueden controlar uno por uno también, sin dormir .

¡Tal vez sea el camino a seguir!

+0

Dos palabras: captor de pantalla. ; o) – deceze

+2

En realidad, cumple con su requisito: D Simplemente no quiere que su video se descargue desde el sitio web. – YOU

+3

LOL, está bien. : D Esto realmente no debería ser una respuesta sin embargo. ;) – deceze

0

Puede proteger el video de la descarga si está utilizando video html5.

Aquí es un script de código abierto que se puede tratar y no hay manera de evitar que por ahora: http://sourceforge.net/projects/defaprotecthtml5videodownload/

Se está utilizando modo de algoritmo especial que no le envía un archivos de vídeo originales, pero con el envío de archivos reglas para que pueda detener la descarga de su video

+0

Voy a sugerir lo mismo. Funciona bien también para audio. Pero si coloca el video y el audio en la página, solo funciona el último. y otros no. ¿Tienes el mismo problema? –

1
//test.php 
<video controls src="your/path/1502139559.mp4"></video> 
    <?php 

     if (session_id() == '') { 
     session_start(); 
     } 
     error_reporting(0); 
     $out2 = ob_get_contents(); 
     if (strpos($out2, "<video") || strpos($out2, "<audio") || strpos($out2, "<source")) { 
     ob_clean(); 
     if (strpos($out2, "<safe") == false) { 
     $window = md5(time()); 
     $_SESSION['window'] = $window; 

     ?> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" > 
     <script> 
     jQuery.ajax({ 
      type: "POST", 
      url: "/enable.php", 
     }); 


     </script> 



     <?php 

     if (strpos($out2, "<safe") !== false) { 
     $_SESSION['safe'] = "SAFE"; 
     } 

     function getURL($matches) { 
     global $rootURL; 
     if ($_SESSION['defat'] == "") { 
      $_SESSION['defat'] = 1; 
     } else { 
      $_SESSION['defat'] = $_SESSION['defat'] + 1; 
     } 
     $_SESSION['x' . $matches['2'] . $_SESSION['defat']] = 0; 
     $_SESSION['defa' . $matches['2'] . $_SESSION['defat']] = md5(time() . "Defa Protector"); 
     $_SESSION['imdefa' . $_SESSION['defat']] = md5('Defa') . base64_encode(base64_encode($matches['2'])); 
     $_SESSION['x' . $matches['2']] = 0; 
     $_SESSION['defa' . $matches['2']] = md5(time() . "Defa Protector"); 
     $_SESSION['file' . $_SESSION['defat']] = md5('Defa') . base64_encode(base64_encode($matches['2'])); 
     return $matches[1] . $rootURL . "defavid.php?window=" . $_SESSION['window'] . "&defat=" . $_SESSION['defat']; 

     } 

     $mes = preg_replace_callback("/(<video[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $out2); 
     $mes = preg_replace_callback("/(<source[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $mes); 
     $mes = preg_replace_callback("/(<audio[^>]*src *= *[\"']?)([^\"']*)/i", getURL, $mes); 
     echo $mes; 
     } else { 
     echo $out2; 
     } 
     } 

    ?> 
    //defavid.php 
    <?php 

     ob_start(); 
     if (session_id() == '') { 
     session_start(); 
     } 
     $window = addslashes(strip_tags($_GET['window'])); 
     $md5defa = md5('Defa'); 
     $t = (int) $_GET['defat']; 
     $filedefa = str_replace($md5defa, '', $_SESSION['file' . $t]); 
     $file = str_replace("https://", "http://", base64_decode(base64_decode($filedefa))); 
     $defa = str_replace("https://", "http://", base64_decode(base64_decode($filedefa))); 
     $defaurl = get_headers($file, 1); 
     $url = $defaurl["Location"]; 
     if ($url != $file && $url != "") { 
     $file = $url; 
     } 
     if (!function_exists('http_response_code')) { 

     function http_response_code($newcode = NULL) { 
     static $code = 200; 
     if ($newcode !== NULL) { 
     header('X-PHP-Response-Code: ' . $newcode, true, $newcode); 
     if (!headers_sent()) 
      $code = $newcode; 
     } 
     return $code; 

     } 

     } 
     $header = http_response_code(); 
     $header2 = getallheaders(); 

     function isMobile() { 
     return preg_match("/(MSIE|Edge|android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 

     } 

     if (isset($_SESSION['jsenable' . $window])) { 
     if ($header == 200 && $header2['Accept'] != "" && $_SESSION['x' . $defa . $t] == 0 && isMobile() || isset($_SERVER['HTTP_RANGE'])) { 

     $_SESSION['x' . $defa . $t] = $_SESSION['x' . $defa . $t] + 1; 
     if (isset($_SERVER['HTTP_RANGE'])) { 
     $opts['http']['header'] = "Range: " . $_SERVER['HTTP_RANGE']; 
     } 
     $opts['http']['method'] = "HEAD"; 

     $conh = stream_context_create($opts); 

     $opts['http']['method'] = "GET"; 

     $cong = stream_context_create($opts); 

     $out[] = file_get_contents($file, false, $conh); 

     $out[] = $http_response_header; 

     ob_end_clean(); 

     array_map("header", $http_response_header); 

     readfile($file, false, $cong); 
     die(); 
     } 
     } 

    ?> 
    //enable.php 

    <?php 
    if(session_id() == ''){ 
     session_start(); 
    } 
    $window = $_SESSION['window']; 
    $_SESSION['jsenable'.$window] = TRUE; 
    ?> 
Cuestiones relacionadas