2011-07-05 30 views
5

Estoy desarrollando un sitio exclusivo para miembros y necesito asegurar las URL de video que estarán disponibles en él para que no puedan compartirse ni pasarse a usuarios que no sean miembros.Cómo puedo asegurar el video mp4 y flv

He oído hablar del enmascaramiento de URL pero no tengo idea de cómo hacerlo. ¿O hay otra manera?

Básicamente, los videos se llevarán a cabo en un servidor remoto (vps) o a través de Amazon S3 y el sitio llamará el video y lo transmitirá en flowplayer, JW player o cualquier jugador que pueda encontrar y me permitirá Asegure el video.

¿Alguien sabe cómo hacer esto? ¿O sabe de un servicio que hará esto por mí?

Gracias

TT

+0

porno? lo siento, tuve que preguntar :-) –

+0

Si pueden transmitirlo a su computadora, entonces pueden guardar la secuencia, de una forma u otra. Entonces podrían distribuirse de todos modos como les gusta. DRM tiene una gran historia de fracasos. – Raoul

+0

Lo que dijo el Sr. Duke, si se está reproduciendo en el lado del cliente, se puede guardar en el lado del cliente. No hay manera de evitarlo.Sin embargo, podrías asegurarlo para que solo los miembros tengan acceso a los videos en primer lugar, ¿esa es tu pregunta? O tal vez podrías escribir tu propio jugador que descifra el video en la memoria, por lo tanto, solo podría reproducirse en tu reproductor (a menos que alguien lo haya capturado, obviamente, o haya revertido la ingeniería de tu clave de cifrado). –

Respuesta

2

No sé por qué tantas personas dan el consejo equivocado, pero sí se puede hacer esto. El hecho de que se esté "reproduciendo" en el lado del cliente no significa que se guardará en el lado del cliente: tendría que usar un software que pueda grabar la transmisión mientras se está reproduciendo. Ya sea software de captura de pantalla o algo así.

De todos modos, para hacer esto, necesita utilizar .htaccess para redirigir las solicitudes de archivos a un archivo php que servirá dinámicamente la ubicación del archivo y ofuscará la URL.

Usted necesitará lo siguiente en su código html

<html> 
<body> 
<script type="text/javascript" src="flowplayer-3.2.12.min.js"> 
</script> 
    <script type="text/javascript"> 
// <![CDATA[ 
    window.onload = function() { 
    $f("player", "flowplayer-3.2.16.swf", { 
     plugins: { 
     secure: { 
      url: "flowplayer.securestreaming-3.2.8.swf", 
      timestampUrl: "sectimestamp.php" 
     } 
     }, 
     clip: { 
     baseUrl: "secure", // Im using a folder called "secure" you can call it whatever you want 
     url: "trailer.flv", 
     urlResolvers: "secure", 
     scaling: "fit", 
     onStart: function (clip) { 
      document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url; 
     } 
     } 
    }); 
    }; 
    // ]]> 
    </script> 

<div id="player"></div> 

</body> 
</html> 

sectimestamp.php acaba de esta línea en él:

<?php 
echo time(); 
?> 

entonces tiene que escribir su archivo .htaccess de la siguiente manera y el lugar en su carpeta "segura" o en cualquier lugar donde se guarden los videos:

RewriteEngine on 


RewriteRule ^(.*)/(.*)/(.*)$ video.php?h=$1&t=$2&v=$3 

RewriteRule ^$ - [F] 
RewriteRule ^[^/]+\.(flv|mp4)$ - [F] 

siguiente paso es yo ur archivo video.php que está en el mismo directorio que el .htaccess (se puede poner en otro lugar simplemente ajustar la dirección URL en el .htaccess

<?php 
$hash = $_GET['h']; 
$streamname = $_GET['v']; 
$timestamp = $_GET['t']; 
$current = time(); 
$token = 'kljaslidilhal9023402'; // I recommend a dynamic token to be generated using something like mt_rand() function 
$checkhash = md5($token . '/' . $streamname . $timestamp); 

if (($current - $timestamp) <= 2 && ($checkhash == $hash)) { 
    $fsize = filesize($streamname); 
    header('Content-Disposition: attachment; filename="' . $streamname . '"'); 
    if (strrchr($streamname, '.') == '.mp4') { 
    header('Content-Type: video/mp4'); 
    } else { 
    header('Content-Type: video/x-flv'); 
    } 
    header('Content-Length: ' . $fsize); 
    session_cache_limiter('nocache'); 
    header('Expires: Thu, 19 Nov 1981 08:52:00 GMT'); 
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: no-cache'); 
    $file = fopen($streamname, 'rb'); 
    print(fread($file, $fsize)); 
    fclose($file); 
    exit; 
} else { 
    header('Location: /secure'); 
} 

?> 

Esta es la parte donde el token de validación se compara con la secuencia de asegúrese de que no tenga más de 2 segundos de antigüedad; de lo contrario, deberá actualizar la página y solicitar un nuevo token.

Ahora, todo lo que esto hace es que si intenta acceder a url.com/secure/trailer.flv no podrá hacerlo gracias a .htaccess (los administradores de descargas tampoco funcionarán). Pero podrá transmitir esa ubicación gracias a la información de php en url.com/video.html y la fuente en el archivo FLV se verá como url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv. Por lo tanto, será muy difícil extraer el flujo del archivo flash directamente porque esa URL no sale; no puede visitar el sitio directamente en url.com/secure/trailer.flv gracias a .htaccess; y, finalmente, la única opción es la captura de pantalla/software que registra durante la transmisión.

Así que no es 100% seguro, pero sí hacer las cosas difíciles para el usuario final - y lo mejor de todo es gratis

Cuestiones relacionadas