functions descargar php jquery jquery-ui jplayer

php - descargar - jPlayer Stream MP3 pero evita la descarga y el hotlinking



jplayer object (4)

Estoy construyendo un sitio similar a thefuture.fm. Los DJ pueden cargar archivos MP3 y establecer si el archivo solo se puede transmitir o transmitir y descargar.

Los visitantes del sitio no tienen que iniciar sesión para escuchar música. Deberían poder transmitir / descargar estas canciones MP3 dependiendo de la configuración del usuario.

Estoy usando jPlayer para reproducir canciones. He buscado en toda la web pero no puedo encontrar ninguna solución. ¿JPlayer tiene alguna facilidad como evitar la descarga de archivos MP3? ¿O hay alguna manera de que pueda evitar esto?


Lo que está buscando no se puede lograr con la solución de JavaScript. Si desea que javascript reproduzca algo, debe descargarlo y para poder descargarlo, JavaScript necesita una URL.

La forma más común de abordar este problema es utilizar Adobe Flash y crear un jugador en él. Puede hacer que su reproductor reproduzca contenido (mp3 en su caso) sin exponer explícitamente la ubicación de datos real al usuario.


Coloque los archivos en una ubicación que no sea accesible desde el navegador y use PHP para transmitirlos como una serie de fragmentos utilizando HTTP/1.1 206 Partial Content . A continuación, utilice un método como este para editar el menú contextual y agregar / eliminar el ''guardar como''.

Use una sesión var para eliminar enlaces directos.


La prevención de hotlinks es un poco más fácil, ya que en general tendrá una cadena de referencia para verificar. Si esto está presente, sabrá que no sirve el contenido. Aquí hay un ejemplo de código.

Evitar la descarga, por otro lado, es mucho más difícil: el mejor enfoque sería que una aplicación Flash descifre datos en tiempo real; si utiliza un esquema de cifrado simple, la mayoría del hardware del cliente debería ser lo suficientemente rápido. No pude encontrar mucho para esto en la web, así que me pregunto si tendrías que hacer algo de desarrollo de Flash / Flex tú mismo: descargar datos MP3 en fragmentos, aplicar rutinas de descifrado de una biblioteca y enviarlos a algún tipo de MP3 decodificador buffer Sospecho que la contraseña estaría codificada.

Adición: he encontrado que en versiones posteriores de Flash puede reproducir sonidos generados dinámicamente desde un búfer ( consulte aquí ). Entonces, si estás dispuesto a quedarte atrapado en algún desarrollo de Flash / Flex, hay una solución a la vista. No pude encontrar nada que acceda a las rutinas de MP3 de bajo nivel, pero no olvide que los archivos no tienen que ser MP3, como se transmiten desde su servidor: conviértalos a lo que necesite su aplicación.


En realidad, es imposible evitar la descarga. Puede hacer que sea más difícil para alguien, pero todavía necesita descargar todos los datos para escuchar la canción. Entonces, incluso si usa alguna encriptación para enviar los datos a un reproductor flash que usted mismo escribe, el jugador tendrá que descifrarlo y reproducir el audio. Y dado que puedes descompilar el flash, no sería difícil descubrir el algoritmo. También podría simplemente grabar la música nuevamente cuando la reproduce (similar a las primeras herramientas de descifrado de DVD, que solo tomaron una captura de pantalla 30 veces / seg para pasar mediciones de seguridad millonarias)

Entonces, el objetivo es hacerlo más difícil, no imposible.

Personalmente, buscaría enlaces temporales disponibles en combinación con una cookie, por lo que aún puedo usar jplayer y no tengo que reinventar la rueda. También use algunas ofuscaciones para dificultar la lectura de la URL.

Cuando alguien solicita la URL principal (donde muestra su reproductor), genere una clave única y guárdela en una cookie. La clave única debe vincular a la dirección IP y solicitar el tiempo almacenado en la sesión.

Ahora crea un enlace al archivo de música como playfile.php? File = music.mp3 o lo que sea. Solo asegúrate de que PHP manejará la solicitud del archivo. Si ofusca este enlace, será un poco más difícil encontrarlo.

En playfile.php busca el código único en la cookie y verifica si coincide con la dirección IP en sesión y el tiempo de solicitud es menor que EG 15 segundos (más tiempo y la música no se reproducirá de todos modos con una conexión a Internet lenta). Si es así, transmita el archivo. Si no es así, bloquéalo.

Ahora, si alguien escribiera un programa / guión para descargar la música, puede hacerlo. Pero si alguien tiene el conocimiento y el tiempo para hacerlo, nada le impedirá descargarlo.

Esto evitará que cualquier usuario normal lo descargue.