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.
#!/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!
Nos ahorramos cada vez que ven ese video 9MB al estar en el cache.
Saludos a todos
Entries (RSS)
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
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 ???
Ariel, seguramente tenes que revisar tus ACL.
Saludos,
Alejandro
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
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
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 ?
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
fecticamente me devuelve un error al ejecutar el script:
Can\’t find string terminator \’\"\’ anywhere before EOF at /etc/squid/store.pl line 7.
Gracias… Ya lo solucione.. era un espacio en el scripts, que no debia estar.
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!!
Hola Jesus. Gracias por tus comentarios.
Revisaste los permisos del script en perl como pusimos arriba?
Saludos
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!!
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
Muchas gracias por los consejos, voy a probar algunos días, y a ver que tal funciona
Muchs gracias de nuevo!!!
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!!
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)
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
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
en ubuntu server como haria para hacer cache de videos una ayuda estoy verde
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
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?
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.
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
Me podrias pasar a mi email las otras configuraciones que tienes para los otros sitios como Metacafe y tube8
Muchas gracias
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.
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.
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
Esto funciona actualmente ? , porque creo que youtube cambio de sintaxis y varios ejecutables como videocache dejaron de funcionar
Podrian ayudarme para hacer trabjar esto en windows usando el cygwin y el squid 2.7 stable 8 (version windows) ???? Estoy en las nubes .
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. ??
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 .
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?
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
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?
Chino,
muy interesante, y dime en Squidnt como sería, bueno si no es mucha molestia
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
Funciona esto con squid 3.1 ?? alguien lo ha probado ?
Esta solucion , Funciona con squid 3.1 ??
Muy bueno la verdad es que justo con mi hermano estabamos haciendo un servidor para la cache de youtube
probe tu configuracion y me funciono bien, me gustario saber si me puedes colaborar para poder cahear el resto de videos gracias
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?
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.
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
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
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
Hola Lusca-Cache algunas cosas son diferentes, revisaste estos valores?
storeurl-rewrite-children 1
storeurl-rewrite-concurrency 10
Saludos
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.
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
Este codigo que vos pones en el sitio ,, cachea (YouTuve, Google, Metacafe, Dailymotion, Vimeo, Soapbox, BlipTV, Break, TV Uol, etc) ?
No, solamente cachea YouTube el código que pusimos acá.
Saludos
consulta?,, ustedes venden el codigo que cache lo demas ?
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
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
Pregunta,, funciona con squid 3.1 ?? este store ?
si es asi ya migro a squid 3.1
gracias
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
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
Que recomeindan usar ? Squid o Varnish ? Cual es el que tiene un mejor desempeño ? ambos son multiplataforma (windows / Linux) ?
Sigue funcionando? Quiero aplicarlos squint pero no sale.
Esto todavia funciona ? Porque he intentado pero no cachea .
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!!!
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.
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.
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
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
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()
—————————————————————————————————————————
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.
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.
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
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.
muchas gracias por la guia, muy util.
Saludos.
Excelente solo le falto colocar al inicio esto…. (http|https) asi toma los videos que pasan por https tambien
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.