Foros congelados de Ágora Marianista [2001-2004]
  Ayuda para Navegantes
  Webmasters

  ¡Webmasters OJO! El proxy-cache de TeleFonica
smdani
Daniel Pajuelo Vázquez, sm
Administrator



Enero 15, 2003, 11:42:56
Desde hace unos días la empresa TeleFonica ha puesto un proxy entre todos sus clientes de ADSL e Internet.

Está claro que la razón del proxy es económica para reducir el ancho de banda y política para poder monitorizar las actividades de los internautas como exige la LSSI.

* ¿Qué es un proxy?  http://bandaancha.st/documentos.php?docid=49
* Comprueba si estás detrás de un proxy
http://www.lagado.com/proxy-test

Atención, porque el proxy no cachea las páginas cifradas con SSL, así que los webmasters que queráis evitar que vuestras páginas se muestren obsoletas podéis pasarlas por https.

Adecuar una web a usuarios detrás del proxy-cache

Para evitar que los usuarios ADSL de TeleFonica sigan viendo versiones antiguas de una web podemos añadir información sobre el tiempo de modificación, el tiempo de expiración y el modo de cache en la cabecera HTTP/1.1 de los archivos. Esto se puede hacer desde cualquier lenguaje CGI como Perl, Python o PHP mediante sus funciones incorporadas y también mediante los módulos de Apache mod_expires y mod_headers.

Las cabeceras son:
Código:
Expires: [fecha]
Last-Modified: [fecha]
Cache-Control: [opciones]

Last-Modified (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29 ) contiene la fecha de la última modificación del archivo. Si no se especifica Expires y esta fecha es anterior a la actual el cache no volverá a leer la página.

Expires (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 )contiene la fecha a partir de la que el proxy volvera a cargar el documento.

El formato de las fechas es el estandar HTTP-Date (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 ):

*día de la semana en corto (Mon Tue Wed Thu Fri Sat Sun
*día del mes en dos dígitos
*mes en corto (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dic)
*año cuatro cifras
*tiempo en horas:minutos:segundos en 24 horas
*franja horaria (España es GMT+1)

Código:
Expires: Thu, 01 Dec 1994 16:00:00 GMT

Cache-Control (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 )contiene una lista separada por comas de las siguientes opciones:

* no-cache - el documento no se debe cachear
* public - el documento debe cachearse
* max-age=[segundos] - el máximo tiempo ensegundos sin recargar
* min-fresh=[segundos] - el mínimo en segundos antes de recargar
* must-revalidate - el proxy vuelve a mirar si se ha actualizado el archivo cada vez que se pide con un If-* Modified-Since pero si no se ha modificado no lo vuelve a descargar (este es aconsejable usarlo)

Estos datos son sólo guias para el proxy que después puede hacer lo que le da la gana. De todas formas, muchos navegadores, como MoZilla las usan para saber que es lo que tienen que volver a descargarse. Además, el Google mira el Last-Modified para saber si debe volver a indexar.

Logeando los ips reales en el Apache

Lo que pasará si un usuario del proxy intenta acceder a tu web, es que el proxy lo hará por él, y entonces la ip que saldrá en tu access.log será la del proxy. Muchos proxies, incluido en nuevo de TeleFonica incluyen una cabecera HTTP/1.1 llamada Client-ip que lleva la ip real del cliente. Se puede configurar el Apache para que guarde el Client-ip en vez de la ip del proxy de esta forma.
Código:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{Client-ip}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" proxy:%h" proxy

SetEnvIf Client-ip . client-ip-request

CustomLog /var/log/apache/access.log combined env=!client-ip-request
CustomLog /var/log/apache/access.log proxy env=client-ip-request


También puedes tener una lista de ips de proxies para que la gente no se dedique a decir que es una ip diferente y hacer trampas.
Código:
SetEnvIf Client-ip . client-ip-request
SetEnvIf Remote_Addr "^proxy1.telefonicaonline.com$" proxy-ip-request
SetEnvIf Remote_Addr "^proxy2.telefonicaonline.com$" proxy-ip-request
SetEnvIf proxy-ip-request 0 client-ip-request=0

CustomLog /var/log/apache/access.log combined env=!client-ip-request
CustomLog /var/log/apache/access.log proxy env=client-ip-request


Más información en las webs del mod_log_config ( http://httpd.apache.org/docs/mod/mod_log_config.html )y del mod_setenvif (http://httpd.apache.org/docs/mod/mod_setenvif.html).

Generando las cabeceras desde Perl

Para poner las cabeceras se puede usar el módulo CGI (http://stein.cshl.org/WWW/software/CGI/#header):
Código:
sub http_time {
   my (@t,$tstr);
   @t = gmtime($_[0]);
   $tstr  = (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[$t[6]].", ".$t[3]." ";
   $tstr .= (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec))[$t[4]];
   $tstr .= " ".(1900+$t[5])." ".$t[2].":".$t[1].":".$t[0]." GMT";
   return $tstr;
}

O usando el módulo Time::Ctime:
Código:
use Time::CTime;
strftime("%a, %d %b %Y %T %Z",gmtime($time));

O usando el módulo HTTP::Date que ya lo hace todo solo.
Código:
use HTTP::Date;
time2str($time);



Generando las cabeceras desde Php

Para añadir cabeceras se usa la función header antes de que se imprima nada (sino dará error). Para usar strftime hay que poner primero las locales a inglés porque sino imprimiría los días de la semana en castellano.

por ejemplo:
Código:
setlocale (LC_TIME, "C");
header("Cache-control: must-revalidate");
header("Last-Modified: ".gmstrftime("%a, %d %b %Y %T %Z",strtotime("now")));
header("Expires: ".gmstrftime("%a, %d %b %Y %T %Z",strtotime("+1 hour")));

Un artículo sobre como mantener actualizadas las webs dinámicas: http://www.zend.com/zend/spotlight/dynamic-pages.php

Generando las cabeceras desde los módulos del Apache

Para generar los expires en función de los tiempos de modificación y acceso de los archivos puedes usar el módulo mod_expires, que viene con el servidor desde la versión 1.2.

Para añadir cabeceras a Ficheros se usa el mod_headers ( http://httpd.apache.org/docs/mod/mod_headers.html ).

yo uso:
Código:
ExpiresActive on
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/jpg "access plus 1 week"
Header append Cache-Control "must-revalidate"


Gracias a peix.org






smdani
Daniel Pajuelo Vázquez, sm
Administrator



Enero 15, 2003, 11:59:07
Artículo interesante de www.bandaancha.st


(¿Des?)Información oficial sobre el proxy-caché


Esta noticia no viene a añadir nada nuevo,... se trata simplemente de recordar lo que ya se comentó en el artículo anterior sobre el maravilloso proxy caché de telefonicaonline.com.

Recordad que hoy es el dia en el que la página de (¿des?)información a cerca de esta "tope tecnología" está disponible a partir de hoy en:

Aqui (http://www.telefonicaonline.com/adsl/proxycache/ )y directamente aqui (http://www.telefonicaonline.com/on/es/micro/adsl/proxycache/guias.htm), en la que nos informarán de las "maravillosas" "autenticas" e "inmejorables" sensaciones que aun no conocemos.

Oficialmente indican que estas mejoras son:

Aumento de la velocidad (hasta 1/3)
No necesita ninguna configuración para poder "disfrutar" de esta "cosa".
Disminuirá la carga de los servidores "minimizando el riesgo de colapso y saturación inherentes en un servicio tan utilizado como es Internet"* (que amables, Internet no se acabará colapsando y todos seremos felices).
Las desventajas (que YO aprecio son, entre otras):

Las páginas que TU visitas son almacenadas en un equipo al que otros usuarios tienen acceso.
El usuario NO puede solicitar NO usar dicho "servicio".
Las páginas "de actualidad" puede que no se actualicen .frecuentemente o correctamente.
Las visitas de las páginas podrían caer en picado si no se adaptan a las cachés.
Los webmasters podrian tener que hacer algunas adaptaciones para que sus webs no fueran "cacheadas".
La autentificación por IP dejará de funcionar.
Los ficheros modificados DEBEN DE CAMBIAR DE NOMBRE
El proxy afectará a:

El protocolo HTTP destinado al puerto 80 (al HTTPS no le influirá)
Streaming de Microsoft Windows Media (puerto 1755)
Streaming de Real Networks(puerto 554)
Streaming de Quicktime (Puerto 554 otra vez)
Se puede evitar usar la caché usando el boton de Recargar / Actualizar pulsando:

Control en Internet Explorer
Shift en Netscape
(No se han especificado otros navegadores).

Ofrecen 3 PDFs:

Una guia de usuario ( http://www.telefonicaonline.com/on/es/archivos/pdf/guias/guia_usuario_cache.pdf): Páginas preferidas: 6/7. En la página 8 habla de un puerto "7070" que no ha mencionado antes.

Una guia de proveedor (http://www.telefonicaonline.com/on/es/archivos/pdf/guias/guia_proveedor_cache.pdf )


Una guia de empresa (http://www.telefonicaonline.com/on/es/archivos/pdf/guias/guia_empresas_cache.pdf ) : Página preferida: la 13

* = Literal

Nota: Para saber si estais tras uno de los multiples servicios que podeis encontrar googleando un rato como este: http://www.lagado.com/proxy-test y este: http://www.lagado.com/tools/cache-test

Más información: Proxies, proxies-cache y proxies transparentes ( http://bandaancha.st/documentos.php?docid=49)


smdani
Daniel Pajuelo Vázquez, sm
Administrator



Octubre 06, 2003, 09:39:23
Fuente: http://freneticmig.com/webmasterseproxy.html




Para los webmasters que deseen evitar el polémico proxy de Telefónica a continuación os proporcionamos códigos HTML y PHP que podéis incorporar a vuestras páginas para saltaros el cacheo indiscriminado al que estamos siendo sometidos.



[ HTML ]
Insertar el codigo en cada página entre <HEAD> y </HEAD>:

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="cache-control" value="no-cache, no-store, must-revalidate">
<meta http-equiv="Expires" content="Mon, 01 Jan 1990 00:00:01 GMT">
<meta http-equiv="REFRESH" content="3">



Este es el código HTML de enlace ESTÁTICO:

<a href="infoproxycache.htm"> Pulsa actualizar y veras que este enlace permanece estático</a>
Este es el código HTML de enlace DINÁMICO:

<script>
document.write('<a target=_parent href=infoproxycache.htm'+'?par='+Math.random()+'>Pulsa actualizar y tú página vendrá de tu servidor</a>');
</script>

[ ... ]




[ PHP ]
Insertar el código en el inicio de cada página:

header("Expires: Mon, 6 Jan 2003 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-cache, must-revalidate"); // Compatibilidad con HTTP/1.1

header("Pragma: no-cache"); // Compatibilidad con HTTP/1.0

[ ... ]




TRIQUI
Invitado

E-mail
Octubre 17, 2004, 03:17:27
Yo antes tenía en el httpd.conf del Apache las líneas:

SetEnvIf Remote_Addr "192.168.0.2" nolog
SetEnvIf Remote_Addr "192.168.0.3" nolog
SetEnvIf Remote_Addr "192.168.0.1" nolog
SetEnvIf Remote_Addr "127.0.0.1" nolog

que me permitían que las visitas que hago yo mismo a mi propio servidor apache no salgan en los logs, pero al cambiar la configuración para que muestre ip reales ahora me muestra mis propias visitas.

¿Sábes como puedo evitarlo?

Gracias por todo


Páginas: [1]
Foros congelados de Ágora Marianista [2001-2004] | Powered by YaBB SE
© 2001-2002, YaBB SE Dev Team. All Rights Reserved.