duda sobre cache..  [INACTIVE]

Foro en español para discutir sobre cuestiones generales de BrazilFW 3.x.

duda sobre cache..

Mensagempor piojacinto » Sáb Abr 09, 2016 9:40 pm

bueno hace un tiempo que me pase a MK hara un año o menos.. pero.. ahora quiero implementar un cache de youtube... no encontre nada concreto.. con brazil version 3 puedo cachear youtube y demas web de contenido dinamico=? junto con MK..

desde ya gracias.
Avatar do usuário
piojacinto
BFW Intermediate
 
Mensagens: 522
Registrado em: Dom Ago 23, 2009 2:33 pm
BrazilFW Box:

Re: duda sobre cache..

Mensagempor Lenobare » Sáb Abr 09, 2016 11:00 pm

Youtube es https y ser almacenado en caché , debe desarrollar un complemento para este procedimiento .
Estamos discutiendo este tema para llegar a una solución
Estude, estude e... continue estudando.
Avatar do usuário
Lenobare
BFW Full Associate
BFW Beneméritos
BFW Manager
BFW Moderator
BFW HaarpCache
BFW Squid 3.5.x
 
Mensagens: 1682
Registrado em: Qua Ago 28, 2013 8:45 pm
Localização: Brasília
BrazilFW Box: Maquina: Fisica
CPU:Xeon HP ML30
Memória 8GB - 2Links
BFW 3.0.262 64 Bits
HD 300GB 15k,
Serviços Ativos: Control Mac, VPN, Squid (Cache),
Addons: Haro, Whatchdog. Squid 3.5.27, Lognet e Samba.

Re: duda sobre cache..

Mensagempor piojacinto » Qua Abr 13, 2016 3:47 pm

y digamos en paginas como www.pelispedia.tv cachea normalmente o hay que hacer algo? y es funcional junto con mikrotik? osea lo puedo poner como al thunder cache junto con una rb1100x2 sin problemas?? no cachea solo lo que es https?
Avatar do usuário
piojacinto
BFW Intermediate
 
Mensagens: 522
Registrado em: Dom Ago 23, 2009 2:33 pm
BrazilFW Box:

Re: duda sobre cache..

Mensagempor iasimov » Dom Jun 19, 2016 3:26 pm

Saludos amigos,

Una posible idea para habilitar caché a youtube sería la siguiente, a ver qué os parece:

https://github.com/rg3/youtube-dl es un software opensource para descargar vídeos de youtube desde la línea de comandos de linux,
pues bien, imaginad que en cada WISP se habilita un servidor web HTTP con una interfaz de usuario parecida a youtube, sin la parte social de youtube, unicamente para el visionado de videos utilizando youtube-dl para descargarlos y mostrandolos en un .php utilizando HTML+CSS, ya que con youtube-dl se pueden descargar los videos directamente en formato .mp4 que es compatible con todos los navegadores modernos.
Además se podría añadir un par de opciones que a la mayoría de usuarios les suele interesar como son: 1) Descargar videos de youtube, 2) Descargar el audio de los videos (para canciones etc).

Con la opción "-j" de youtube-dl se puede obtener un fichero JSON con las urls directas para descargar el mp4 de cada video, y con .php es facil leer el json, descargar el mp4, y retransmitirlo al vuelo usando curl.

Es decir, la idea en resumen sería hacer una interfaz web sencilla para utilizar el software open source ya existente de "youtube-dl".

Copio un ejemplo de codigo PHP para la idea mencionada.

Es sólo una prueba, si alguien no entiende alguna línea de código sólo tiene que preguntar.

Para que funcione tiene que estar instalado "youtube-dl" (en ubuntu: apt-get install youtube-dl), php, curl y cualquier servidor web que soporte php (apache, lighttpd, etc).

Si por ejemplo el codigo se pone con el nombre "ver.php" en el server http local, para ver un video de youtube sería...
El video de youtube: youtube.com / watch?v=6sOpbRL8R4g
Tendría la url http://127.0.0.1/ver.php?v=6sOpbRL8R4g

Obviamente con esto solamente no es muy usable youtube, pero sólo es una prueba para que se entienda la idea de cuál podría ser la solución a seguir usando youtube por HTTP.

El script envia los datos del vídeo "al vuelo", es decir, no guarda nada en el disco duro (de eso debe encargarse el proxy cache que se utilice), y si el navegador pide una posición avanzada de un vídeo largo, el script pide esa posición en concreto (en lugar de todo el vídeo).

Igual que se ha hecho el script para el video, se puede hacer otro para las búsquedas/resultados, para el autocomplete de la barra de búsqueda (usando jQuery por ejemplo), etc...

Lo bueno de hacer algo así, además de que se pueda cachear, es que también se puede eliminar la publicidad de los vídeos, ofrecer la posibilidad de descargar videos/audios desde la web al usuario, y personalizar la página de inicio de los videos con los que quiera el admin.

Y repito, sólo es una prueba, no es para usar en modo producción.

Esta idea también puede usarse para otras webs/servicios (cada cual con su complejidad de implementación) que utilicen cifrado, el cifrado no se puede romper, la idea es que el ISP haga de gateway ofreciendo a sus usuarios el mismo servicio sin cifrado y accediendo el ISP al servicio cifrado, de forma automática.
Por ejemplo, imaginad que una empresa quiere monitorear los mensajes whatsapp de sus empleados. El cifrado de whatsapp no se puede romper, pero la empresa puede hacer un servidor gateway que entre a whatsapp y sirva el contenido de la conexion sin cifrado a sus usuarios, prohibiendo el acceso a la versión cifrada y facilitando un .apk con el programa que acceda a la versión sin cifrado (el código del cliente de Telegram, software similar a Whatsapp, es open source).

Copio el código PHP del ejemplo de vídeos en youtube.

Código: Selecionar todos
<?PHP

header("Accept-Ranges: bytes");

$id = $_GET['v'];

$yt_info = yt_json($id);
if ($yt_info==false) exit(0);

$video_url = yt_get_mp4($yt_info);
if ($video_url==false) exit(0);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $video_url);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "curl_header_func");
if (isset($_SERVER["HTTP_RANGE"]) && substr($_SERVER["HTTP_RANGE"], 0, 6)=="bytes=")
    curl_setopt($ch, CURLOPT_RANGE, substr($_SERVER["HTTP_RANGE"], 6));

curl_exec($ch);

function yt_json($id) {
    if (!yt_id_valid($id)) return false;
    $res = pipeopen("youtube-dl -j https://www.youtube.com/watch?v=".$id);
    $res_json = json_decode($res, true);
    if ($res_json==NULL) return false;
    return $res_json;
}

function yt_id_valid($id) {
    return strlen($id)==11 && preg_match('/^[a-zA-Z0-9_\-]+$/', $id);
}

function pipeopen($ruta) {
    $fp = popen($ruta, "r");
    while(!feof($fp))
        $res .= fread($fp, 1024);
    fclose($fp);
    return $res;
}

function yt_get_mp4(&$yt_info) {
    $url = false;
    foreach ($yt_info["formats"] as $format)
        if ($format["ext"]=="mp4")
            $url = $format["url"];
    return $url;
}

function curl_header_func($ch, $header_line) {
    $valid_headers = array("http/1.1 206", "content-type: ", "content-range: ", "content-length: ");
    foreach ($valid_headers as $valid_header) {
        if (str_cmpi_start($valid_header, $header_line)) {
            header($header_line);
            break;
        }
    }
    return strlen($header_line);
}

function str_cmpi_start($str1, $str2) {
    return strlen($str2)>=strlen($str1) && $str1==strtolower(substr($str2, 0, strlen($str1)));
}

?>
Avatar do usuário
iasimov
BFW Curious
 
Mensagens: 8
Registrado em: Qui Fev 18, 2016 11:32 am
BrazilFW Box:


Voltar para BrazilFW 3.x

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes

cron