• • • Colección privada de recortes de código y documentación para programación web
[Sí, aún estamos en pruebas; ¿por?]
Conocer la dirección IP real de nuestra visitas no siempre es posible... ni útil. Esta función devuelve la IP que se esconde detrás del último proxy (si lo hay y no se esconde) o la IP que ha pedido la página (en caso contrario).
La variable HTTP_X_FORWARDED_FOR es una lista de IPs separadas por comas, que se van añadiendo a medida que la petición atraviesa proxies. Aunque depende de que el proxy rellene correctamente la variable, en la práctica va razonablemente bien.
A quien más y quién menos le ha sucedido: al ir a descargar setup.exe desde una página que no habías visitado jamás en la vida, el servidor te lo deniega argumentando que has superado el límite diario de descargas. What??? La explicación es muy sencilla: el webmaster de la página identifica a sus visitantes por la dirección IP que se conecta para pedir la página. Sin embargo, el que se conecta al servidor web es, con frecuencia, un proxy-caché del proveedor de Internet. Para ese webmaster, ¡los 500 usuarios de Telefónica que se han bajado setup.exe son el mismo!
No siempre es posible conocer la dirección IP del ordenador desde el que nos ven porque el intermediario muchas veces no nos la dice. Y tampoco es siempre útil, porque con frecuencia se trata de una dirección IP privada (p. ej. 192.68.1.33) que sólo funciona dentro de su red local.
Anselmo navega por Internet con su fiel módem de 56K y la tarifa plana de Acme Telekom. Todos los domingos arranca su Internet Explorer y abre Google para buscar recetas de pollo.
Benito también tiene módem de 56K, pero su proveedor tiene un proxy-caché transparente para ahorrarse unos duros en la factura del ancho de banda. Benito es un fan de Britney Spears y busca información en Google (sección "Imágenes") con su Firefox tuneado.
Carlota navega a velocidades de vértigo con su router ADSL, al que tiene conectados dos ordenadores y una tostadora de pan. Le gustan los gatos.
Anselmo tiene salida directa a Internet, IP pública y ningún proxy-caché intermedio: su PC habla directamente con el ordenador del Sr. Google.
Benito también tiene salida directa e IP pública, pero es el proxy-caché el que habla en su nombre con el Sr. Google.
Carlota está en una red local y tiene IP privada. Esa IP sólo es válida en su pequeña red: le sirve para comunicarse con el PC de su hermano, pero nadie puede alcanzarla desde Internet. Su interlocutor es el router ADSL, que tiene una IP pública que comparten Carlota y su hermano. A su vez, éste habla con el Sr. Google a través del proxy-caché. Milagrosamente funciona.
A Demetrio lo hemos dibujado para ilustrar que una IP privada, como sólo es válida en redes locales, puede ser usada a la vez por más de un PC, siempre que sean de redes locales diferentes.
De este embrollo sale que Google conoce la IP de Anselmo, puede estimar la de Benito y no tiene ni idea de cuál es la de Carlota (ni le serviría de nada), pero puede estimar la de su router. Usando la directamente la IP de REMOTE_ADDR podría contar las visitas de Anselmo, pero sería incapaz de distinguir entre Benito, Carlota y el hermano de Carlota. Con ip_estimada() podría distinguir a Benito de Carlota & bros. En ningún caso le serviría para diferenciar las visitas de Carlota de las de su hermano.
Actualización: aparentemente Telefónica se ha deshecho de sus proxies transparentes desde que se publicó este artículo. Pobrecicos, los tengo acojonados.
Esta página ha sido impresa el domingo 6 de julio de 2008 (22:50:18 +0200) desde http://bits.demogracia.com/recortes/php/ip-estimada.html, contenía HTML válido con CSS fresquito la última vez que lo miré y no debería tener flatas de ortografía.
Demogracia Bits no tiene absolutamente ninguna relación con Demogracia, salvo el nombre, el dominio punto com y que el autor es el mismo.
© 2005-2008 by Álvaro G. Vicario (alvaro.es) ¤ Burgos (España) ¤ http://bits.demogracia.com/