Hola a todos, hace tiempo que no escribiamos en el blog. Aca les dejamos una funcion interesante del proxy server Squid.

Los usuarios de Squid sabran que por lo general y por default no se puede cachear videos de Youtube. Existen algunas razones, vamos a enumerar algunas:

  • El video viene de varios cache servers internos que usa Youtube (o Google) entonces la url cambia.
  • Si el video se cancela no baja entero.

Para evitar lo primero, a partir de la version 2.7 se incorpora una funcion “storeurl rewrite”, lo que permite separar (parseando) la URL que utiliza para buscar en su storage interno (backend – el cache en si mismo).

De esta manera podemos crear que multiples URL destino hagan referencia al mismo contenido del backend, asi evitamos duplicacion de contenido. Muy util para CDN.

Voy a poner un ejemplo simple: El sitio example.com tiene dos servidores web y me traen la misma imagen.gif, por default en Squid se almacena como dos imagenes diferentes, si haces un rewrite del store, podemos apuntar a la misma.

http://servidor1.example.com/image.gif

http://servidor2.example.com/image.gif

Podemos reescribir algo como: (sintaxis en Perl – mas info ver regex o me preguntan)

$url =~s!http://servidor\d+\.example\.com/(.*\.gif)!http://s-example.INTERNAL/$1!;

Expresion regular que tiene como funcion matchear servidor(numero) y cualquier nombre como gif, ese nombre se reemplaza en $1. Y se reescribe a un nombre de fantasia que invente yo.

Si mas o menos entienden, la idea es rescribir la url a una forma normalizada, tenemos que poner manos a  la obra para Youtube.

Cuando ejecutamos un video este se va a buscar a los caches internos que tienen, y la url tiene mas o menos esta forma: (llama a una funcion videoplayback)

http://v19.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0&
sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=904708%2C905208&
algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1264122000&key=yt1&
signature=654F0FB48D631BF220381FED556AE9E905989E71.0D479B82F2C57401EDB9AEB24A41C4447DA35E47&
factor=1.25&id=3e9103da619d1f28&

De esos tags podemos desprender varias cosas, pero en este caso solo nos interesa algo que identifique univocamente al video, nos quedamos con el parametro “id”.

Hacemos un rewrite asi:

$url =~s!^http://.*?/videoplayback\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;

Si lo probamos (copiando la url por STDIN, nos devuelve por STDOUT la reescritura.

# perl /etc/squid/store.pl

http://v19.lscache7.c.youtube.com/videoplayback?...&id=3e9103da619d1f28&

http://v-youtube.INTERNAL/ID=3e9103da619d1f28

Y asi.

Parametros a de configuracion a modificar del squid.conf

# aca configuramos el store rewrite
storeurl_rewrite_program /etc/squid/store.pl
acl store_rewrite_list urlpath_regex get_video\? videoplayback\? videodownload\?
storeurl_access allow store_rewrite_list
storeurl_access deny all
cache allow store_rewrite_list

acl QUERY2 urlpath_regex get_video\? videoplayback\? videodownload\?
cache allow QUERY2

# patrones para caching y que ignoremos los encabezados No-Cache
refresh_pattern get_video\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
refresh_pattern videoplayback\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
refresh_pattern videodownload\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
# importante para los range y que baje todo el video, y un pequeño bug con el tamaño de la url
minimum_object_size 512 bytes
maximum_object_size_in_memory 32 KB
range_offset_limit -1
maximum_object_size 200 MB
quick_abort_min -1

Y ahora la magica pieza del store rewrite. :-D

#!/usr/bin/perl
$|=1;
while (<>) {
@X = split;
$url = $X[0];
$url =~s!^http://.*?/videoplayback\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;
print "$url\n";
}

Solamente les dejo el ejercicio para “youtube usando videoplayback”, pero lo tengo para otros sitios de videos de Google, Metacafe, Dailymotion, Vimeo, Soapbox, BlipTV, Break, TV Uol (Brasil), y otros sitios de contenido XXX que no voy a poner aca porque Google me va a indexar y va a pensar mal de mi. Cualquier cosa me preguntan.

Miramos el access.log del squid y cuando acceso a un video (la segunda vez ya sale del cache):

1264093473.644  50428 172.22.0.153 TCP_HIT/200 9817978
GET http://v14.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%
2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=903707&
algorithm=throttle-factor&itag=5&ipbits=0&burst=40&sver=3&expire=1264118400&key=yt1&
signature=0913DFCF267D50241CBA4C84ECBB57450287AE31.262DB100A4F3960D2B66A26591F395D84FED2526&
factor=1.25&id=5a84b0718d025dea& - NONE/- video/x-flv

Hit, hit! :-D

Nos ahorramos cada vez que ven ese video 9MB al estar en el cache.

Saludos a todos

72 Responses to “Caching Youtube con Squid 2.7”
  1. Jahvier says:

    Muy interesante logre hacer el cache de youtube, estube buscando informacion y solo la encontraba en thailandes y los traductores poco podian hacer, si alguien mas necesita hacer el cacheo en smoothwall, sigan estos pasos:

    entramos a la consola con putty y en la terminal:

    crear la carpeta /etc/squid

    root$ mkdir /etc/squid

    despues creamos el script en perl para cambiar las direcciones

    root$ vi /etc/squid/store.pl

    lo llenamos con el codigo q nos proporciono el buen Alejandro Gramajo:

    #!/usr/bin/perl
    $|=1;
    while (<>) {
    @X = split;
    $url = $X[0];
    $url =~s!^http://.*?/videoplayback\\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;
    print \"$url\\n\";}

    ponemos permisos de ejecucion a nuestro script

    root$ chmod 755 /etc/squid/store.pl

    Ahora editamos el archivo de configuracion alterno de nuestro Smoothwall

    root$ vi /var/smoothwall/proxy/advanced/acls/include.acl

    y lo llenamos con el codigo:

    storeurl_rewrite_program /etc/squid/store.pl
    acl store_rewrite_list urlpath_regex get_video\\? videoplayback\\? videodownload\\?
    storeurl_access allow store_rewrite_list
    storeurl_access deny all
    cache allow store_rewrite_list

    acl QUERY2 urlpath_regex get_video\\? videoplayback\\? videodownload\\?
    cache allow QUERY2

    refresh_pattern get_video\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videoplayback\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videodownload\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    minimum_object_size 512 bytes
    maximum_object_size_in_memory 32 KB
    range_offset_limit -1
    maximum_object_size 200 MB
    quick_abort_min -1

    Ahora solo reiniciamos el servicio de Advanded web proxy desde la interface web y listo!

    Y como peticion podrias colocar los demas sitios q mencionas, sobre todo los xxx … gracias y saludos

  2. Ariel says:

    Hola,, segui la guia talcual,, pero queria consultar lo siguiente
    No se porque cuando habilitos estas reglas el proxy me comienza a rechazar las conexiones.
    Puede ser por alguna acl ???

  3. Ariel, seguramente tenes que revisar tus ACL.

    Saludos,
    Alejandro

  4. Ariel says:

    Gracias,, en este ejemplo hace referencia a alguna acl ?? perdona que te pregunte pero soy nuevo en esto

    porque veo esto
    acl store_rewrite_list urlpath_regex get_video\\\\\\\\? videoplayback\\\\\\\\? videodownload\\\\\\\\?
    storeurl_access allow store_rewrite_list
    storeurl_access deny all
    cache allow store_rewrite_list

    y no me queda claro

  5. Ariel,

    El ejemplo que puse no tiene una configuracion completa de Squid, solamente es la parte para redirigir el store al script.
    Ese ACL que estas viendo es solo para “matchear” parte de las URL de Youtube.

    La configuracion que te viene por default en Squid es completa, deberias agregar tu red interna.
    Algo como esto.

    acl mynetworks src 192.168.1.0/24 192.168.2.0/24
    http_access allow mynetworks

    Y revisar el orden, ya que despues de eso debe haber un deny.

    Saludos

  6. Ariel says:

    Gracias nuevamente,, el problema que descubri es que cuando habilito la linea
    storeurl_rewrite_program /etc/squid/store.pl , squid no inicia. El archivo lo tengo creado en el directorio, lo que no se si funciona.
    es una Debian 5 .
    Como puedo probar si el archivo perl funciona correctamente ?

  7. Le diste los permisos de ejecucion?

    # chmod a+x /etc/squid/store.pl

    Verifica si no pusiste un error sin querer asi:

    # perl -c /etc/squid/store.pl
    /etc/squid/store.pl syntax OK

    Espero que sirva.

    Me parece que necesitas consultoria de BAICOM Networks! Jeje

    Saludos

  8. Ariel says:

    fecticamente me devuelve un error al ejecutar el script:

    Can\’t find string terminator \’\"\’ anywhere before EOF at /etc/squid/store.pl line 7.

  9. Ariel says:

    Gracias… Ya lo solucione.. era un espacio en el scripts, que no debia estar.

  10. jesus says:

    Hola, llegué a este artículo navegando en google, una felicitación por compartir con los que no somos tan avanzados en estos temas tus conocimientos…
    Tengo en producción un server con smootwall 3 con advanced proxy instalado, llevé a cabo los pasos que Jahvier tan amablemente compartió con nosotros, y cuando lo habilito se muere squid, revisando los logs me da lo siguiente:

    The store_rewriter helpers are crashing too rapidly, need help!

    Problemas de hardware no creo, pues es un cpu nuevo, con tarjeta madre intel y un celeron 430 a 1.8 ghz.

    Ojalá puedan ayudarme, pues en mi red más del 60% del tráfico es a youtube, y si puedo cachear los videos realmente seré feliz :)

    Muchas gracias!!

  11. Hola Jesus. Gracias por tus comentarios.

    Revisaste los permisos del script en perl como pusimos arriba?

    Saludos

  12. jesus says:

    Hola gracias por contestar, ya revisé, y el problema que tenía es que utilicé las líneas de código tal como las puso Jahvier, el problema es que hay que eliminar las \\\\ dobles, dejando únicamente una \\; al momento lo estoy probando y funciona fabuloso, solo una pregunta, es conveniente vaciar el caché de squid cuando ya llegue a determinado tamaño para evitar que empiece a dar errores o se ponga lento? Lo tengo instalado en un disco duro de 250 gigas, y pienso que de acuerdo a la carga que tiene podría llenarse tal vez en un mes o algo así, algún consejo?
    Muchas gracias por tu ayuda!!

  13. Jesus, si lo dejas tal cual esta la expiracion se producira de manera automatica podes jugar con estos valores

    refresh_pattern get_video\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videoplayback\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videodownload\? 10080 90% 999999 override-expire ignore-no-cache ignore-private

    Podes reemplazar 999999 es la cantidad de tiempo en minutos que un objeto recide sin expiracion explicita.

    Y por otro lado el squid no consume mas espacio que lo que vos definis en cache_dir, por defecto:

    cache_dir ufs /var/spool/squid 100 16 256

    Mi recomendacion si tenes 20g y que arme una estructura de directorios mayor:

    cache_dir ufs /var/spool/squid 20000 64 256

    Saludos

  14. jesus says:

    Muchas gracias por los consejos, voy a probar algunos días, y a ver que tal funciona :)
    Muchs gracias de nuevo!!!

  15. jesus says:

    Hola he estado probando el script y ha funcionado bien, salvo el detalle que al parecer los videos expiran en algunos días, pero si me está ahorrando algo de tráfico; tengo una duda, yo al menos me entiendo razonablemente bien con la línea de comandos, pero no se programación :( viendo en los foros de smoothwall hay una contribución que hace caché de actualizaciones de windows y antivirus, pongo a continuación el enlace http://community.smoothwall.org/forum/viewtopic.php?f=26&t=23480 , y entiendo que squid no soporta más de un redirector, al menos en smoothwall; habrá alguna forma de combinar ambos códigos, para así poder cachear youtube y actualizaciones en forma simultánea? En verdad que esto sería fabuloso.
    Saludos!!

  16. kakasi says:

    Hola, quisiera saber si es posible hacer eso con el squid pero en windows? (ya se que linux es mejor pero por X motivos tengo que usar windows en ese servidor)

  17. Hola Jesus,
    podes combinar ambas cosas sin problemas, pero en este caso no te vale la pena, ya que con squid podes cachear sin problemas los updates de MS y otros, aca te dejo algunos refresh que yo uso, tambien podes usar tags como override-expire para no darle importancia a cuando el sitio de obliga a expirar los archivos, pero esto puede traer otros problemas.

    refresh_pattern -i \.gif$ 10080 100% 43200
    refresh_pattern -i \.jpg$ 10080 100% 43200
    refresh_pattern -i \.jpeg$ 10080 100% 43200
    refresh_pattern -i \.bmp$ 10080 100% 43200
    refresh_pattern -i \.mid$ 10080 100% 43200
    refresh_pattern -i \.wav$ 10080 100% 43200
    refresh_pattern -i \.ico$ 10080 100% 43200
    refresh_pattern -i \.yim$ 10080 100% 43200
    refresh_pattern -i \.jar$ 10080 100% 43200
    refresh_pattern -i \.ldict$ 10080 100% 43200
    refresh_pattern -i \.swf$ 10080 100% 43200
    refresh_pattern -i \.class$ 10080 100% 43200
    refresh_pattern -i \.cab$ 10080 100% 43200
    refresh_pattern -i \.flv$ 10080 90% 999999 override-expire
    refresh_pattern windowsupdate\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
    refresh_pattern update\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
    refresh_pattern office\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960
    refresh_pattern windowsupdate\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
    refresh_pattern download\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
    refresh_pattern microsoft\.com 4320 100% 10080

    Seguramente cuando tenga un poco de tiempo voy a ampliar la configuracion del squid en este post o en otro con mas features para cachear otros contenidos.

    Saludos

  18. Hola Kakasi, podes usar Squid en Windows, y en cuanto al script de Perl vas a tener que instalar algun interprete como ActiveState Perl.

    No es recomendable en terminos de performance utilizar Windows, pero sino te queda otra, mucha suerte!

    Saludos

  19. jorge villafuerte says:

    en ubuntu server como haria para hacer cache de videos una ayuda estoy verde

  20. Jesusovich Apéstegui says:

    Hola Alejandro, me ha sido de gran ayuda la información brindada muchas gracias. Tengo instalado el Squid 2.7 en un centOS 5.4 y todo funciona correctamente; quisiera seguir fortaleciendo mi proxy, te agradecería bastante si me ayudaras a completar el cacheo de otros sitios como los videos de google y Metacafe, cuál es el procedimiento que debo seguir o qué algoritmos debo agregar al script. Entiendo que debo agregar al script algo como:

    $url =~s!^http://.*?/videoplayback\\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;

    como lo haría para los otros casos??… también usan videoplayback??

    Un cordial saludo Alejandro =D

  21. rcpimeki says:

    Hola, me sale esteos mensajes:
    2010/04/07 17:17:07| cache_cf.cc(346) squid.conf:128 unrecognized: ‘storeurl_rewrite_program’
    2010/04/07 17:17:07| cache_cf.cc(346) squid.conf:130 unrecognized: ‘storeurl_access’
    2010/04/07 17:17:07| cache_cf.cc(346) squid.conf:131 unrecognized: ‘storeurl_access’

    Tengo Debian 5 y squid3 Version 3.0.STABLE8

    ya hice
    # chmod a+x /etc/squid3/store.pl

    # perl -c /etc/squid3/store.pl
    /etc/squid3/store.pl syntax OK

    hay que instalar algo adicional?

  22. Diego says:

    Hola Alejandro,

    Muchas gracias por el aporte que generas, es un apoyo enorme a toda la comunidad.

    Sin embargo, mi consulta es: como podemos determinar que tal sitio (Metacafe, BlipTV, Break, etc.) utilizan VIDEOPLAYBACK… en que nos tenemos que basar o como podemos buscar esta info a fin de poder generar nuestros propios SCRIPTS de configuracion sobre el SQUID.

    De antemano agradezco tu sabia respuesta.

    Saludos.

  23. Rcpimeki, en squid 3 se llaman los tag de otra manera, fijate en la doc o instala con apt-get el squid 2.7 esta disponible.

    Diego, próximamente voy a ampliar el articulo con otros sitios para caching, para agregar hay que analizar cada sitio en particular que funcion llama y descarga el flv.

    Saludos,
    Ale

  24. Omar K says:

    Me podrias pasar a mi email las otras configuraciones que tienes para los otros sitios como Metacafe y tube8

    Muchas gracias

  25. Diego says:

    Hola Ale

    Gracias por tu valiosa información, sabes que he estado ampliando el script de perl, con el fin de almacenar en la cache, videos de otras webs; por tanto, he desarrollado uno que detallo a continuaciòn y de la misma manera, quisiera conocer tus comentarios acerca de este emprendimiento.

    Lo he probado colocando variables estaticas, con links de diferentes sitios, dando resultados satisfactorios a nivel del script.

    !——————————————————— 0 ———————————————————!

    #!/usr/bin/perl
    $|=1;
    while () {
    @X = split;
    $url = $X[0];
    if ($url =~ /([0-9A-Za-z_+]*\.flv)/) {
    $url =”http://v-proxy.INTERNAL/ID=$1″;
    print “$url \n”;
    #print “$1 \n”;
    }
    elsif ($url =~ /(get_video|videodownload|videoplayback)?/) {
    if ($url =~ /.*id=([^&]+).*/) {
    $url = “http://v-proxy.INTERNAL/ID=$1″;
    print “$url \n”;
    #print “$1 \n”;
    }
    }
    else {
    print $x . $_ . “\n”;
    }
    }

    !——————————————————— 0 ———————————————————!

    Como se puede apreciar el script es bastante generico, es decir, que se podria cachear todo lo referente a videos de cualquier sitio, si tienen esa sintaxis (casi la mayoria)… Por tanto, si se requiere colocar seguridad unicamente para cachear ciertos dominios, lo pueden controlar en el fichero squid.conf con la ACL dstdomain.

    Saludos Cordiales.

  26. Carlos says:

    Probaste si te funciona con la nueva modificacion de las URL de youtube? watch?
    me podras mandar a mi mail tu script?

    por otro lado, queria consultarte algo que no me cierra.
    en tu script creaste esta linea: $url =~s!^http://.*?/videoplayback\\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;
    se puede reemplazar por ejemplo videoplayback por watch? o la nueva url de youtube??, ya que en la nueva URL el ID no existe.

    Saludos.. muy buen doc.

  27. ardilla says:

    Buenas a tod@s,
    tengo una duda tras leer esto, que por un lado me viene bien, pero otro lado me gustaria saber si hay forma de guardar en el log del Squid las URL de los videos visitados…

    me gustaria tener un registro de los videos que se han visto pero por defecto eso no puedo verlo en el log.

    Conoceis algun modo??

    salu2

  28. carlosch says:

    Esto funciona actualmente ? , porque creo que youtube cambio de sintaxis y varios ejecutables como videocache dejaron de funcionar

  29. kakasi says:

    Podrian ayudarme para hacer trabjar esto en windows usando el cygwin y el squid 2.7 stable 8 (version windows) ???? Estoy en las nubes .

  30. kakasi says:

    OK, ya lo solucione, funciona, muchisimas gracias Alejandro.

    Solo una consulta sobre este comentario

    # importante para los range y que baje todo el video, y un pequeño bug con el tamaño de la url

    Los valores de los object_size deben ser esos para evitar problemas? y podrias explicar a que te refieres con el bug de url, es decir con que parametro lo genero /soluciono. ??

  31. kakasi says:

    Por cierto , para hacerlo funcionar en windows puse esta linea

    storeurl_rewrite_program C:/cygwin/bin/perl.exe C:/cygwin/usr/local/bin/store.pl

    Funciona, pero no se si fue la opcion mas optima, como dije antes estoy en las nubes .

  32. kakasi says:

    Lo malo que al parecer cada vez que se abre video de youtube se activa un proceo perl.exe , he estado probandolo 10 minutos y cuando vero el administrador de tareas aparecen como 8 procesos perl.exe .

    Tambien he notado que ya no cargan las imagenes que tenia cacheadas , es decir antes de colocar el codigo para el youtube, cargaban las paginas rapidamente porque ya las tenia en el cache, pero al poner el codigo al parecer esto ya no trabaja asi y demora en cargar las imagenes, no se si sea una incompatibilidad, yo he trabajado con el siguiente codigo

    refresh_pattern -i \.gif$ 20000 90% 40000
    refresh_pattern -i \.jpg$ 20000 90% 40000
    ….

    Por cierto yo tengo la version de squid con delay pools, tendra algo que ver?

  33. elbrutox says:

    Se puede usar refresh_pattern con acls ?

    Algo asi quiero hacer

    acl static_images urlpath_regex -i \.(jpg|jpeg|gif|png)$
    cache allow static_images
    refresh_pattern static_images 0 20% 4320

  34. kakasi says:

    En windows cachea pero la primera vez que carga se demora el doble , es asi en Linux?

    Y por ejemplo este video no carga

    http://www.youtube.com/watch?v=TTp_D2i92jU

    A ustedes les carga?

  35. Percy SE says:

    Chino,
    muy interesante, y dime en Squidnt como sería, bueno si no es mucha molestia

  36. pitufo77 says:

    kakasi, i make this settings and work fine on Iexplorer 8 , but firefox stop my squid service. do you have the same problem? my mail is romerogz@hotmail.com

  37. Ariel says:

    Funciona esto con squid 3.1 ?? alguien lo ha probado ?

  38. Ariel says:

    Esta solucion , Funciona con squid 3.1 ??

  39. Muy bueno la verdad es que justo con mi hermano estabamos haciendo un servidor para la cache de youtube

  40. edasgue says:

    probe tu configuracion y me funciono bien, me gustario saber si me puedes colaborar para poder cahear el resto de videos gracias

  41. azzaro says:

    buenas, estoy probando un server con centos y squid 3, el cual me permite cachar bastante bien, pero al poner las lineas de la configuracion para obtener los videos de youtube en el conf(previamente fue creado el store.pl) este servicio se detiene. Tengo habilitadas las acl mynetwork, alguien me podria dar una ayuda?

  42. LuisARTUR says:

    Hola

    Felicitaciones!!!! Alejandro Gramajo por testear algo importante

    En cuanto al cache youutube me funciona perfectamente, sólo que ahora no puedo cachear las paginas webs.
    Cuanto desactivo el parametro de cache youtube vuelve a la normalidad.
    esto es asi o existe un parametro mas para que cache los videos y tambien las paginas.

    Agradecere su respuesta.

  43. LuisArtur, gracias por dejar tu comentario.

    Con respecto al caching, con la configuración listada deben funcionarte tanto el caching de youtube como las paginas comunes, revisa los access list.
    Ya que solamente ciertos patrones van a ser redirigidos al script que reescribe el store.

    Saludos

  44. AF says:

    Hola, estoy tratando de configurar este script en squid 2.7 ( en realidad lusca-cache), parece funcionar bien, pero no se por que tengo un error cuando agrego las lineas
    refresh_pattern get_video\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videoplayback\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videodownload\? 10080 90% 999999 override-expire ignore-no-cache ignore-private

    me devuelve el siguiente error

    parse_refreshpattern: Unknown option ‘get_video\?’: override-expire
    parse_refreshpattern: Unknown option ‘get_video\?’: ignore-no-cache
    parse_refreshpattern: Unknown option ‘get_video\?’: ignore-private
    parse_refreshpattern: Unknown option ‘videoplayback\?’: override-expire
    parse_refreshpattern: Unknown option ‘videoplayback\?’: ignore-no-cache
    parse_refreshpattern: Unknown option ‘videoplayback\?’: ignore-private
    parse_refreshpattern: Unknown option ‘videodownload\?’: override-expire
    parse_refreshpattern: Unknown option ‘videodownload\?’: ignore-no-cache
    parse_refreshpattern: Unknown option ‘videodownload\?’: ignore-private

    alguna line esta mal. nos e cual sera

  45. AF says:

    Ya lo solucione,, agregando un \";\" .. sin las comillas al final de cada linea

    ahora es normal que me aparezacan tantos procesos del store.pl , casi 100 tengo y el cpu,, me lo esta matando

  46. Hola Lusca-Cache algunas cosas son diferentes, revisaste estos valores?

    storeurl-rewrite-children 1
    storeurl-rewrite-concurrency 10

    Saludos

  47. AF says:

    Gracias,, por tu ayuda,, lo voy a probar,, consulta

    Esta solucion es la misma que hay en el sitio de squid ?
    http://wiki.squid-cache.org/ConfigExamples/DynamicContent/YouTube
    me refiero codigo del store.

  48. No es la misma, fuimos modificando algunas URL ya que van cambiando en YouTube, lo mismo para otros sitios que fuimos incorporando a nuestra solución para empresas. (YouTuve, Google, Metacafe, Dailymotion, Vimeo, Soapbox, BlipTV, Break, TV Uol, etc)

    Saludos

  49. AF says:

    Este codigo que vos pones en el sitio ,, cachea (YouTuve, Google, Metacafe, Dailymotion, Vimeo, Soapbox, BlipTV, Break, TV Uol, etc) ?

  50. No, solamente cachea YouTube el código que pusimos acá.

    Saludos

  51. AF says:

    consulta?,, ustedes venden el codigo que cache lo demas ?

  52. En realidad nosotros, entre otras cosas, vendemos la consultoria e ingenieria de la solución que necesites. Y vamos liberando código de las cosas.

    En este caso por ej. “Caching web”, podemos instalar un proxy web. Si se necesita performance o caching podemos usar Squid o Varnish.

    Nuestra solución incorpora lo que fuimos investigando y vamos actualizando las mejoras en todos nuestros clientes. Porque algo que sucede con el store es que las URL en algunos sitios van cambiando.

    Saludos

  53. AF says:

    ahhh ok..
    gracias,, lo voy a tener en cuenta,, no se porque pero no puedo ingresar el codigo en lusca,,
    storeurl_rewrite_program /etc/squid/store.pl
    acl store_rewrite_list urlpath_regex get_video\\? videoplayback\\? videodownload\\?
    storeurl_access allow store_rewrite_list
    storeurl_access deny all
    cache allow store_rewrite_list

    acl QUERY2 urlpath_regex get_video\\? videoplayback\\? videodownload\\?
    cache allow QUERY2

    refresh_pattern get_video\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videoplayback\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    refresh_pattern videodownload\\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
    minimum_object_size 512 bytes
    maximum_object_size_in_memory 32 KB
    range_offset_limit -1
    maximum_object_size 200 MB
    quick_abort_min -1

    me devuelve

    parse_refreshpattern: Unknown option ‘get_video\?’: override-expire
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘get_video\?’: ignore-no-cache
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘get_video\?’: ignore-private
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videoplayback\?’: override-expire
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videoplayback\?’: ignore-no-cache
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videoplayback\?’: ignore-private
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videodownload\?’: override-expire
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videodownload\?’: ignore-no-cache
    2010/08/05 15:24:02| parse_refreshpattern: Unknown option ‘videodownload\?’: ignore-private

  54. AF says:

    Pregunta,, funciona con squid 3.1 ?? este store ?

    si es asi ya migro a squid 3.1

    gracias

  55. Willi says:

    Me parece muy buen aporte, pero tengo instalado Ferdora 12 con Squid 3.1 y no me funciona, tendras la solucion para esta version. Gracias

  56. servitecno says:

    Hola Alejandro,, tienes Mail, donde podamos hablar, de negocios,, necesito algunas asesorias, para implementar en mi squid..

    Mandame tu mail a servitecno@gmail.com

    Graciass

  57. carlos says:

    Que recomeindan usar ? Squid o Varnish ? Cual es el que tiene un mejor desempeño ? ambos son multiplataforma (windows / Linux) ?

  58. chico_p says:

    Sigue funcionando? Quiero aplicarlos squint pero no sale.

  59. Carlos says:

    Esto todavia funciona ? Porque he intentado pero no cachea .

  60. Adrian says:

    Hola disculpen mi pegunta pero soy nuevo en esto, en que parte del squid tengo que agregar los parametros por que no me inicia el servicio agradezco toda ayuda
    gracias!!!

  61. geniutrixone says:

    Hola,

    He estado hace tiempo tratando de cachear videos de youtube en squid sin resultados satisfactorios.

    Al seguir los pasos que mencionas en la publicación, squid no inicia, al probar el script en perl me da el siguiente error:

    squig:$ perl store.pl http://v19.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=904708%2C905208&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1264122000&key=yt1&signature=654F0FB48D631BF220381FED556AE9E905989E71.0D479B82F2C57401EDB9AEB24A41C4447DA35E47&factor=1.25&id=3e9103da619d1f28

    squid:$ Can\’t open http://v19.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0: No such file or directory at store.pl line 3.

    store.pl:

    #!/usr/bin/perl
    $|=1;
    while(<>){
    @X = split;
    $url = $X[0];
    $url =~s!^http://.*?/videoplayback\\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;
    print \"$url\\n\";}

    ——————–
    no sé si de ahí provendrá el problema, espero alguien pueda ayudarme.

    Saludos y gracias.

    • Diego says:

      Hola geniutrixone,

      Quisiera saber si al arrancar el servicio del squid, este esta corriendo de verdad, lo puedes hacer mediante un netstat -an y verificar si el puerto sobre el cual configuraste el proxy esta a la ESCUCHA. tambien, puedes probar haciendo un perl a tu store.pl para verificar si todo esta correcto.

      Espero tu respuesta.

      • geniutrixone says:

        Hola Diego,

        Squid si me funciona, pues he revisando el tráfico en el servidor y en el firewall de la empresa veo perfectamente que mi equipo navega a través del proxy.

        Youtube es el problema, sigo sin poder cachearlo, o no cachearlo, cualquiera de las 2 formas me acomoda.

        Saludos

  62. Ferrucha says:

    Hola amigos, soy un novato en linux, y quisera saber quien se quiere ganar una lanita configurando a mi servidor para que pueda hacer un cache a todo tipo de videos o por lo menos a los mas populares como youtube, Google, Metacafe, Dailymotion, Vimeo, Soapbox, diran y porque no lo intentas tu, pero les puedo decir que ya lo hize varias y varias veces, y no puedo no guarda la cache, y tengo un grave problema de internet es mas rapida la conexion por dialup, que el lenfinitum de telmex aqui en mi localidad, espero que a alguien le interese poder ayudarme y llevarse una lanita, gracias. espero sus respuestas, no se si sea correcto y se pueda pero dejo mi direccion de correo aqui fernando_urbina hotmail.com

  63. Diego says:

    Hola Alejandro!

    Gracias por tu aporte, quisiera que me ayudes por favor. Sabes yo lo aplique con Python, pero no me esta funcionando bien, me puedes ayudar a depurar este script por favor. Si tienes el script anterior en python, te agradecería mucho.

    Saludos.

    —————————————————————————————————————————
    #!/usr/bin/env python

    import re
    import sys
    import urlparse

    playback_re = re.compile(r\^http://.*youtube.com/videoplayback?.*$\)

    def parseParams(url):
    params = {}
    for i in urlparse.urlsplit(url)[3].split(\&\):
    if \=\ in i:
    n, p = i.split(\=\, 1)
    params[n] = p
    return params

    while True:
    line = sys.stdin.readline()
    try:
    channel, url = line[0]
    matched = False

    if playback_re.match(url):
    params = parseParams(url)
    if ‘itag’ in params:
    new_url = \http://srv.youtube.SQUIDINTERNAL/videoplayback?id=%s&itag=%s\ % (params['id'], params['itag'])
    print channel, new_url
    else:
    new_url = \http://srv.youtube.SQUIDINTERNAL/videoplayback?id=%s\ % (params['id'])
    print channel, new_url
    matched = True

    if matched == \False\:
    print channel, url

    except Exception:
    print line

    sys.stdout.flush()

    —————————————————————————————————————————

  64. Diego says:

    Hola Alejandro!

    En el post tu mencionas que con la configuracion de squid, los archivos se guardan en la cache de squid, sin embargo, cuando un cliente envia una consulta de un video de youtube y este ya se encuentra guardado en squid. Como haces en el script haga match del id del video de la URL con el id del video guardado en squid. Te pregunto, porque al pasar el tiempo o borras el historial de navegacion del navegador y realizar la consulta, el archivo nuevamente se descarga hacia squid y no carga desde este.

    Espero me haya hecho enteder y me puedas ayudar con esta inquietud por favor.

    Saludos.

  65. Luis CArlos says:

    Hola Alejnadro Gamajo, he estado usand esta solución para cachear videos de youtube y ha funcionado muy bien. Quiero decirles a lso que no le sale que sigan intentado y no se rindan, en comentarios más abajo varias personas dan solución a posibles errores. SIn embargo hace una semana aprox ya no cachea casi ningún video, sale el mensaje “error viendo el video, intente de nuevo mas tarde”. T epedidría que porfavro des una actualización al código para seguir utilizando este script muy bueno. Saludos.

  66. Jahvier says:

    Hola que tal, mira hace mas de 1 año que visite tu foro y ahora lo retomo para referencia, y te comento que tengo mi smoothi funcionando sin problemas graves con el cacheo de youtube, aunq por ahi tengo algunos que otros problemas, espero que puedas postear mas codigo para pulir un buen cacheo de videos, yo con gusto comparto las soluciones que he encontrado, saludos

  67. Guillermo says:

    El codigo funciona de maravilla, gracias por compartirlo ya que ahorro mucho en ancho de banda, solo tengo un problema y es que no me cachea sino youtube, no lo hace con .exe ni con .cab o .jpg, que podria hacer ??, muchas gracias.

  68. Mauro says:

    muchas gracias por la guia, muy util.

    Saludos.

  69. Slim says:

    Excelente solo le falto colocar al inicio esto…. (http|https) asi toma los videos que pasan por https tambien :)

  70. percy says:

    hola que tal, este servidor cache como lo puedo utilizar con el mikrotik que esta instalado en una pc?. se aplica algo adicional en la configuracion del squid y en el mikrotik para que todo fluya normalmente?…gracias por las respuestas. Muy bueno el tutorial.

  71.  
Leave a Reply