Código PHP para ocultar URL de streaming/video

jzucchet Seguir

Alfa
Verificación en dos pasos desactivada
Desde
5 Mar 2017
Mensajes
15
Hola, cómo están?
Alguien sabría algún código php donde pueda ocultar la URL del streaming o vídeo por una propia de mi servidor?
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
Desde URL o Desde tu propio vps?
 

marjuanm

Eta
Programador
Verificación en dos pasos activada
Desde
16 Ago 2012
Mensajes
1.417
una forma "podría" ser que llames a cierta web en php, le pases el parámetro que es la ruta o el id de tu streaming pero lo encriptes usando AES o algún otro algoritmo de encriptación a prueba de todo intento de descifrado, ademas en tu servidor puedes validar de donde viene esa conexión, si no viene de tu servidor rechazas la petición.
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
Ocultarlo a traves de una URL y servidor propio.

Desde URL
Ocultarlo a traves de una URL y servidor propio.


Me he quedado dormido este codigo creado por mi pero usado por muchos es bueno para proteger contenido de una forma sencilla

es llamado DRM basico

PHP:
/**

Esto creara una funcion generica que validara la fecha, dispositivo del usuario, navegador, ip, fecha de caducidad y demas

La funciones Decrypt debe ser creada y pasarla como JSON PARSE

*/





/** DRM */

function created_uri($contentShow, $data)

{

    $allowed = isset($_SERVER['HTTP_X_ALLOWED']) ? $_SERVER['HTTP_X_ALLOWED'] : false;

    $content = isset($_SERVER['HTTP_X_CONTENT']) ? $_SERVER['HTTP_X_CONTENT'] : false;



    if ($allowed and $content) {



        /** Firma */

        $sig = isset($data['sig']) ? $data['sig'] : false;



        if ($sig) {

            $signature = json_decode(Decrypt($sig));

            $method = $signature->encrypted;

            /** Permitido */

            $authenticated = true;



            /** exp */

            $exp = isset($method->expire) ? $method->expire : false;

            if (strtotime('now') >= $exp) {

                $authenticated = false;

            }



            /** ei */

            $ei = isset($method->ei) ? base64_decode($method->ei) : false;

            if (helper_user_agent() != $ei) {

                $authenticated = false;

            }



            /** ip */

            $ip = isset($method->ip) ? $method->ip : false;

            if (helper_user_ip() != $ip) {

                $authenticated = false;

            }



            /** id */

            $id = isset($method->id) ? $method->id : false;

            if ($content != $id) {

                $authenticated = false;

            }



            /** Acceso */

            if ($authenticated) {

                return $contentShow;

            } else {

                exit('{[Error.401]}');

            }

        } else {

            exit('{[Error.400]}');

        }

    } else {

        exit('{[Error.400]}');

    }

}



/*

    Lo siguiente es para utilizar los metodos created_uri()

*/



/** Tiempo */

$iat = time();

$exp = $iat + (60 * 1);



/** Firma */

$sig = array(

    'iat' => $iat,

    'exp' => $exp,

    'encrypted' => [

        'expire' => $exp,

        'ei' => base64_encode( helper_user_agent() ),

        'ip' => helper_user_ip(),

        'id' => 'Identificador del video ej: 1',

        'itag' => 'default',

        'source' => getenv('APP_NAME'),

        'mime' => 'application/x-mpegURL',

        'clen' => 'Segundos del video/content',

        'lmt' => $iat,

        'sparams' => 'expire,ei,ip,id,itag,source,mime,clen,dur,lmt'

    ]

);



/*

    El metodo Encrypt debe ser creada y pasarla como JSON PARSE

*/

/** Firma protegida */

$tplSig = Encrypt(json_encode($sig));

$urlSig = http_build_query($sig['encrypted']);



/** Firma Creada */

$signature = '?' . urldecode ( $urlSig ) . '&sig=' . $tplSig;



/*

    Enviando los parametros

*/



/** La firma debe pasar de la siguiente forma */



$uri = '/streamingProgressive/' . $slug . $signature;



/*

    Adicionalmente debe enviar varios parametros por los HEADER

    Asi evitara el uso de hotlinking fake IP / referrer

*/



/*

    Esto debe ser enviado en los Header's de su soliictud a la url

    streamingProgressive

 

    xhr.setRequestHeader('X-content', '<?php echo $sig['encrypted']['id']; ?>');

    xhr.setRequestHeader('X-allowed', '<?php echo $sig['encrypted']['itag']; ?>');

*/



/*

    Funciones genericas que se usan



*/



/** Metodo para la IP del usuario */

function helper_user_ip()

{



    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

        //check ip from share internet

        $ip = $_SERVER['HTTP_CLIENT_IP'];

    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

        //to check ip is pass from proxy

        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

    } elseif (!empty($_SERVER['REMOTE_ADDR'])) {

        $ip = $_SERVER['REMOTE_ADDR'];

    } else {

        $ip = null;

    }

    return $ip;

}



/** Metodo para obtener el agent del usuario */

function helper_user_agent()

{



    if (!empty($_SERVER['HTTP_USER_AGENT'])) {

        //check ip from share internet

        $agent = $_SERVER['HTTP_USER_AGENT'];

    } else {

        $agent = null;

    }

    return $agent;

}



/**

    Analizando las URL'S y entiendo el proceso realizado

*/





/**



    https://videos.com/videoplayback/1?expire=1576342267&ei=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNg==&ip=127.0.0.1&id=1&itag=default&source=Video&mime=application/x-mpegURL&clen=6932456&lmt=1576342207&sparams=expire,ei,ip,id,itag,source,mime,clen,dur,lmt&sig=eUFOVng2T2N2MFFZUFVHMDd6ZnVuZU1PUFBmNEE5TDFEN2JmWitQSFBGSTdCZ2VhZGlrTlBqVXQyQ2ptTWJMcC9YS0ZrZ3FTVkdkYTIvTERRTG8wWjY5cE9qMnVCYlhPQWNkcnJQcmxVYkVCR3lhSTcvMUxmRnpaTWVpcFNyYnpDVTZsa1FiZjFaanpUbklnOTVlS0pkNjRoVXlCNlRhY2dBR2ZRSloxYW9YN3YzVFI0WVpyVUFQYzM3ZnhXRU4yMUYrNE4yZFNEbW84NkJ0Sm56Z0xjMzFxaHNUbUF6T0gzeHg2Q1dWaWdOcWp6SVFSQ3ROaWJlVzB2aCt6SktOVDVVMXZybUtDakEvT0VFenEwUmVvc1FHWE9YeS9VZEs0UkVpS3ZLbjdCYXBEaUMxaTF3YXRzbjQ2WDAwUWx5cU8zVmhyUUFTNnU0THdvQ2NSNnkwaVY3S1Q4aSthbHpSdGJSbFZkc0phTGI2alJJVVB2Z0Z0WEx6V3JIalc4bXl2RzBQOFRvRXRVMXJKdzBSTS9mUW5TNXY4cHhFOVJPdTA4ajRCWFFoeWlYQ3g4bTJTZ3V4ZmdFY1BQaHB2bXVISEF0N3RlckxuNlhIUkVZZkoyRllXekpWS1RKL2czTWpreXQ3Vyt5aEZ4U2NTN01Td09remRwam90N1psQXQ4dVNtQ0ZPa0VtQ0RGOWpDWkdaY0VoS3Z1ZXIvVU15aVp1WDVyVlFWRWhxcW1rQ0FURy9QK1lrVjg1TjNONmpQU0FYT0ZNUVVheGxzYStSeU53ZHBjbUFRdz09



 

    URL PARTS



 

    Scheme:

    https



    Protocol:

    https



    Authority:

    videos.com

    Host:

    videos.com

    Hostname:

    videos.com

    Domain:

    videos.com

    Tld:

    com



    Resource:

    /videoplayback/1?expire=1576342267&ei=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNg==&ip=127.0.0.1&id=1&itag=default&source=Video&mime=application/x-mpegURL&clen=6932456&lmt=1576342207&sparams=expire,ei,ip,id,itag,source,mime,clen,dur,lmt&sig=eUFOVng2T2N2MFFZUFVHMDd6ZnVuZU1PUFBmNEE5TDFEN2JmWitQSFBGSTdCZ2VhZGlrTlBqVXQyQ2ptTWJMcC9YS0ZrZ3FTVkdkYTIvTERRTG8wWjY5cE9qMnVCYlhPQWNkcnJQcmxVYkVCR3lhSTcvMUxmRnpaTWVpcFNyYnpDVTZsa1FiZjFaanpUbklnOTVlS0pkNjRoVXlCNlRhY2dBR2ZRSloxYW9YN3YzVFI0WVpyVUFQYzM3ZnhXRU4yMUYrNE4yZFNEbW84NkJ0Sm56Z0xjMzFxaHNUbUF6T0gzeHg2Q1dWaWdOcWp6SVFSQ3ROaWJlVzB2aCt6SktOVDVVMXZybUtDakEvT0VFenEwUmVvc1FHWE9YeS9VZEs0UkVpS3ZLbjdCYXBEaUMxaTF3YXRzbjQ2WDAwUWx5cU8zVmhyUUFTNnU0THdvQ2NSNnkwaVY3S1Q4aSthbHpSdGJSbFZkc0phTGI2alJJVVB2Z0Z0WEx6V3JIalc4bXl2RzBQOFRvRXRVMXJKdzBSTS9mUW5TNXY4cHhFOVJPdTA4ajRCWFFoeWlYQ3g4bTJTZ3V4ZmdFY1BQaHB2bXVISEF0N3RlckxuNlhIUkVZZkoyRllXekpWS1RKL2czTWpreXQ3Vyt5aEZ4U2NTN01Td09remRwam90N1psQXQ4dVNtQ0ZPa0VtQ0RGOWpDWkdaY0VoS3Z1ZXIvVU15aVp1WDVyVlFWRWhxcW1rQ0FURy9QK1lrVjg1TjNONmpQU0FYT0ZNUVVheGxzYStSeU53ZHBjbUFRdz09



    Directory:

    /videoplayback

    Path:

    /videoplayback/1

    File name:

    1

    Query string:

    expire=1576342267&ei=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNg==&ip=127.0.0.1&id=1&itag=default&source=Video&mime=application/x-mpegURL&clen=6932456&lmt=1576342207&sparams=expire,ei,ip,id,itag,source,mime,clen,dur,lmt&sig=eUFOVng2T2N2MFFZUFVHMDd6ZnVuZU1PUFBmNEE5TDFEN2JmWitQSFBGSTdCZ2VhZGlrTlBqVXQyQ2ptTWJMcC9YS0ZrZ3FTVkdkYTIvTERRTG8wWjY5cE9qMnVCYlhPQWNkcnJQcmxVYkVCR3lhSTcvMUxmRnpaTWVpcFNyYnpDVTZsa1FiZjFaanpUbklnOTVlS0pkNjRoVXlCNlRhY2dBR2ZRSloxYW9YN3YzVFI0WVpyVUFQYzM3ZnhXRU4yMUYrNE4yZFNEbW84NkJ0Sm56Z0xjMzFxaHNUbUF6T0gzeHg2Q1dWaWdOcWp6SVFSQ3ROaWJlVzB2aCt6SktOVDVVMXZybUtDakEvT0VFenEwUmVvc1FHWE9YeS9VZEs0UkVpS3ZLbjdCYXBEaUMxaTF3YXRzbjQ2WDAwUWx5cU8zVmhyUUFTNnU0THdvQ2NSNnkwaVY3S1Q4aSthbHpSdGJSbFZkc0phTGI2alJJVVB2Z0Z0WEx6V3JIalc4bXl2RzBQOFRvRXRVMXJKdzBSTS9mUW5TNXY4cHhFOVJPdTA4ajRCWFFoeWlYQ3g4bTJTZ3V4ZmdFY1BQaHB2bXVISEF0N3RlckxuNlhIUkVZZkoyRllXekpWS1RKL2czTWpreXQ3Vyt5aEZ4U2NTN01Td09remRwam90N1psQXQ4dVNtQ0ZPa0VtQ0RGOWpDWkdaY0VoS3Z1ZXIvVU15aVp1WDVyVlFWRWhxcW1rQ0FURy9QK1lrVjg1TjNONmpQU0FYT0ZNUVVheGxzYStSeU53ZHBjbUFRdz09



    Query String





    'expire':

    1576342267 // Tiempo de vida

    'ei': // Navegador

    TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNg==

    'ip': // Ip del usuario

    127.0.0.1

    'id':

    1 // Recurso solicitado

    'itag':

    default // Calidad del video

    'source':

    Video // Fuente donde se solicita (DOMINIO)

    'mime':

    application/x-mpegURL // Tipo de contenido

    'clen':

    6932456 // Duracion del video

    'lmt':

    1576342207 // Fecha de creacion

    'sparams':

    expire,ei,ip,id,itag,source,mime,clen,dur,lmt // Parametros validados

 

    'sig':

    SIGNATURE // Firma que sera validada por el back-end

*/
 

jzucchet

Alfa
Verificación en dos pasos desactivada
Desde
5 Mar 2017
Mensajes
15
una forma "podría" ser que llames a cierta web en php, le pases el parámetro que es la ruta o el id de tu streaming pero lo encriptes usando AES o algún otro algoritmo de encriptación a prueba de todo intento de descifrado, ademas en tu servidor puedes validar de donde viene esa conexión, si no viene de tu servidor rechazas la petición.
Tienes algún código?
 

jzucchet

Alfa
Verificación en dos pasos desactivada
Desde
5 Mar 2017
Mensajes
15
Desde URL o Desde tu propio vps?
No es lo que quiero exactamente, quiero algo que por ejemplo el dominio del archivo sea 352.235.234.32/live.m3u8 , .mp4 o .mp3 y que con el código a la gente le salga algo así mydomain.com/test.php? o algo así cosa que no sepan de donde viene el dominio original.
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
No es lo que quiero exactamente, quiero algo que por ejemplo el dominio del archivo sea 352.235.234.32/live.m3u8 , .mp4 o .mp3 y que con el código a la gente le salga algo así mydomain.com/test.php? o algo así cosa que no sepan de donde viene el dominio original.


$stream1 = new VideoStream('archivos/local.mp4');
$stream1->start();

Convertira tuservidor.com/archivos/local.mp4

a

dondeseejecute.php
 

jzucchet

Alfa
Verificación en dos pasos desactivada
Desde
5 Mar 2017
Mensajes
15

$stream1 = new VideoStream('archivos/local.mp4');
$stream1->start();

Convertira tuservidor.com/archivos/local.mp4

a

dondeseejecute.php
Perfecto eso es lo que quería, pero tengo un problema si la persona entra al archivo se ve el código junto con el link del streaming. No hay forma de que ese código cuando accedan a través del link de otra cosa o no se vea directamente?
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
Perfecto eso es lo que quería, pero tengo un problema si la persona entra al archivo se ve el código junto con el link del streaming. No hay forma de que ese código cuando accedan a través del link de otra cosa o no se vea directamente?

con la clase de arriba haces enlaces solo para la ip que lo creo y demas lo puedes juntar y hacer algo guapo.
 

jzucchet

Alfa
Verificación en dos pasos desactivada
Desde
5 Mar 2017
Mensajes
15
con la clase de arriba haces enlaces solo para la ip que lo creo y demas lo puedes juntar y hacer algo guapo.
Vale gracias!
Una última cosita, cuando tenga el código ya hecho, lo pongo en el reproductor tal cual (link.com/index.php)? O le tengo que poner algun #.m3u8 para que ande?
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba