Página 1 de 11
Moderador del foro: ZorG 
Foro uCoz » Información General » Para los principiantes » Identificar clientes por su IP
Identificar clientes por su IP
GUARAGUAO
Mensajes: 2362
Reputación: 81
Mensaje Nº 1 | 6:36 PM
Identificar clientes por su IP: un mecanismo obsoleto

Tomar la dirección IP de un cliente para tratar de individualizarlo es un método muy usado por la mayoría de los programas de Internet. Este método (que funcionó muy bien durante varios años), en el escenario actual de Internet ya no funciona, dando lugar a grandes confusiones. Este arículo describe detalladamente las razones de este cambio de escenario, y presenta las soluciones que pueden adoptar los programadores y webmasters para recobrar la exactitud perdida.

Uno de los fundamentos técnicos de Internet consiste en que cada dispositivo u ordenador que se conecta a la red de redes debe poseer una única dirección IP (Internet Protocol) que lo identifique. Basados en esta afirmación, muchos programas en la web intentan identificar a sus visitantes usando la IP que éstos muestran en sus cabeceras de petición HTTP (lo que el explorador envía al servidor para indicarle: "quiero ver tal página"):

• Muchos sistemas de encuestas (polls) no dejan votar más de una vez al día a una determinada IP, para evitar que un usuario pueda manipular los resultados votando muchas veces.
• Muchos sistemas de estadísticas se basan en la IP del usuario para determinar si las visitas que recibe un sitio provienen de diferentes clientes, y cuántas visitas repetidas nos generan algunos clientes en particular.
• Muchos sistemas de estadísticas usan nuestra propia IP para evitar contabilizar nuestros propios accesos a nuestro sitio web, y de esta forma mostrarnos sólo la actividad de los clientes reales.
• Muchos sistemas de intercambio de tráfico (tops, CJs, ad-Servers y rotadores de banners) leen la IP del cliente para determinar si una visita es "unica" o "raw": es decir, si se trata de un cliente que nos visita por primera vez en el día, o si es un "click" repetido, ya sea de alguien que está entrando de nuevo a un link que ya visitó, o está recargando la página, o retrocediendo en el historial del navegador.

Todos estos "controles" basados en la IP del cliente están asumiendo ingenuamente que cada PC conectada a Internet tiene una IP única que lo identifica, tal como decían los libros hace unos pocos años. Pero esto ya no es así, desde que Internet comenzó su expansión masiva y las direcciones IP comenzaron a escasear. Hoy nos encontramos con un escenario algo cambiado: es posible encontrar cientos, e incluso miles de PCs que comparten una misma IP. Pero el software que no se ha adaptado a estos cambios seguirá considerando que todo ese enorme conjunto de máquinas es un solo cliente, aunque en realidad se trate de todo un pueblo o una pequeña ciudad...

• Entonces el mecanismo de encuestas dejará votar a una sola persona de esa ciudad (al primero que se levante a votar ese día). Los demás vecinos no podrán votar en el sistema de encuesta, que les dará el mensaje: "usted ya ha votado hoy".
• Los sistemas de estadísticas nos estarán marcando que tenemos una menor cantidad de visitantes individuales, pero a su vez nos indicará que los mismos mantienen una intensa actividad dentro de nuestro sitio web.
• Si compartimos nuestra IP con otros vecinos, y configuramos nuestro sistema de estadísticas para que no registre nuestra propia actividad, entonces tampoco estará registrando las visitas provenientes de los demás usuarios con que compartimos nuestra IP. Y éstos pueden ser decenas, cientos, o miles.
• Los sistemas de intercambio de tráfico estarán considerando que las visitas de un número creciente de personas son "raw", o repetidas. Y en algunos casos puede penalizarse un intercambio (y bajar su posición en el top o en las listas de enlaces) si se reciben muchas visitas desde las mismas ciudades o pueblos (o al menos desde clientes que se conecten mediante un mismo proveedor de Internet).

Cómo y por qué se comparten las IP
Cuando hace 10 años yo era consultor de una empresa que contrató un enlace permanente a Internet de 64 Kbps, el proveedor de Internet nos asignó un bloque de 32 direcciones IP. "Una dirección IP por cada 2 Kbps" era la norma prácticamente en todo el mundo. En esa empresa había unos 25 puestos de trabajo para conectarse a Inteкnet. De forma que asigné una IP para cada máquina.

El año pasado asesoré a otra empresa para conectar sus sistemas a Internet. Se contrató una línea de 2 Mbps, y el proveedor nos asignó 2 direcciones IP (una IP por cada 1 Mbps) 500 veces menos que hace 10 años! (en aquel entonces nos hubiesen asignado 1024 direcciones IP). Esto es porque los anchos de banda (las velocidades de transmisión de datos) han aumentado, pero el número de posibles direcciones IP sigue siendo exactamente el mismo desde que se inventó Internet. Los investigadores han diseñado un nuevo protocolo llamado IPv6 (IP versión 6, a diferencia del que está actualmente en uso que es IP versión 4). Pero el IPv6 aún está lejos de ser usado mundialmente, a pesar de que los sistemas operativos avanzados (como Linux) ya lo traen desde hace tiempo.

Cuando el IPv6 esté en uso mundialmente, ya no existirán las situaciones problemáticas a que hago referencia en este artículo.

Pero por el momento, los proveedores de acceso a la red están usando soluciones que posibilitan el acceso a mucha más gente al Intenet, pero por otro lado complican al webmaster y al administrador de servidores en la tarea de identificar a los clientes que acceden a los sitios web.

NAT: la técnica más usada para compartir una IP
El NAT (Network Address Translation) permite que muchos clientes usen una misma IP, y funciona de la siguiente forma: La red de clientes tiene en cada una de las computadoras una IP interna que no es válida en Internet (a estas IP se les llama direcciones de red privada, y son 192.168.x.x para la clase C; 172.16.x.x para la clase B, y 10.x.x.x para la clase A). Todas las máquinas de la red privada están configuradas para usar como puerta de enlace (o gateway) a una máquina o router que sí tiene su propia IP real. Este dispositivo de enlace tiene entonces 2 direcciones IP: una interna, que es la que ven el resto de las máquinas cliente (y que a la vez la usan como puerta de enlace), y una IP externa real, que es la que se ve desde Internet. Cuando una máquina de la red interna quiere acceder a un sitio en Internet, entonces hace la solicitud a su puerta de enlace. Y la puerta de enlace (el router NAT) repite la solicitud desde su conexión a Internet, como si la estuviese generando él mismo. Cuando el NAT recibe la respuesta desde el sitio de Internet, la copia a la red interna, enviándola a la máquina que generó la petición inicialmente. Es entonces un "intermediario" para toda la actividad de sus clientes. Un router NAT, visto desde Internet, parece ser una máquina normal, pero con una actividad muy intensa.

El NAT no es la única técnica de acceso a Internet que invalida el viejo concepto de "1 cliente <--> 1 IP" que muchos programas pretenden usar como mecanismo de control. También exiten proxys anónimos, IPs dinámicas, etc. Pero a efectos de este artículo, trataremos el NAT como principal problema, sabiendo que las soluciones son las mismas para los diferentes escenarios técnicos.

Posibles soluciones
La reivindicación de las cookies: las cookies son parte del protocolo HTTP. Son un pequeño puñado de datos que el servidor es capaz de almacenar en la PC del cliente: un número de usuario o de sesión, preferencias de idioma, etc. Su uso es muy seguro tanto para el ciente como para el servidor. Pero el problema es que el usuario tiene la posibilidad de borrar las cookies de su PC (o directamente puede configurar su navegador para que no las acepte). Pero en más de un 95% de los clientes, las cookies harán su trabajo maravillosamente bien.

La "huella" de la PC: es el método más nuevo y el menos conocido y usado, pero también el más exacto. Consiste en obtener un sumario de las característcas de la máquina del ciente que establece una conexión. A su IP se suma el tamaño de su pantalla, la profundidad de color de su tarjeta de video, la versión del sistema opertaivo, el modelo y versión del explorador, si tiene instalado flash, quicktime, shockwave, Real Player, etc, etc. Leyendo la "huella" de los usuarios, aunque los veamos conectarse desde uan misma IP, sabremos por sus características que se trata de máquinas diferentes, y es posible identificarlas con gran precisión. Aún si todas las máquinas fueran iguales (dentro de una empresa, por ejemplo), pronto los usuarios les instalan plugins de software que modifican la huella de cada máquina. El sólo hecho de modificar el tamaño de pantalla modifica la huella también: de modo que en pocas horas, en un parque de máquinas exactamente iguales y que comparten una IP, se estaría en condiciones de individualizar la actividad que provenga de cada máquina.

Conclusión
En el estado actual de la tecnología, la combinación de cookies y "huella" del computador nos da una visión razonablemente precisa sobre la actividad de nuestros visitantes en los sitios web. Y la identificación de usuarios por su IP ya debería ser descartada por su inexactitud (que va en aumento).


Las vírgenes tienen muchas navidades pero ninguna Nochebuena.
GUARAGUAO
Mensajes: 2362
Reputación: 81
Mensaje Nº 2 | 5:41 PM
Cómo saber la ubicación de un usuario

Más de alguna vez nos hemos topado con la situación en la que necesitamos saber desde que parte del mundo nos está visitando un usuario, y en base a eso mostrar o no cierto contenido. Acá veremos que opciones hay para determinar la ubicación de un visitante.

La forma tradicional: según la dirección IP
De hecho, hasta hace un tiempo esta era la única forma de saber la procedencia de un visitante: tomar la dirección IP (pública) desde la cual recibimos la petición y compararla con una base de datos de IPs con sus posibles localizaciones. Para determinar la IP desde la cual nos visita el usuario, desde de php sería:

Quote
$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR'])
? $_SERVER['HTTP_X_FORWARDED_FOR']
: $_SERVER['REMOTE_ADDR'];

Esta ip no representa el nodo real desde el cual nos visitan, pero usualmente es una buena aproximación del origen del usuario.

Existen varias bases de datos dedicadas a recopilar este tipo de información, quizás la más popular sea la versión gratuita de IPligence (mientras no se use para fines comerciales y se les dé el crédito). Esta versión incluye 150,000 referencias por país, Microsiervos hizo un experimento en el que determinaron que es 95% exacta.

Hay que tener en cuenta que IPligence te da su base de datos en formato CSV y con las IP’s convertidas a número enteros, pero ellos explican como hacer la conversión de IPs y como cargar estos datos hacia un gestor de base de datos.
Otra opción son los datos de Hostip, un proyecto abierto que con ayuda de la comunidad y algunos ISPs ha ido recolectando sus datos. Puedes descargar la base de datos de IP’s, o usar su API incluso.

Deja que el mismo usuario te diga con HTML5
Una de las nuevas funcionalidades de HTML5, es la posibilidad de saber la ubicación del usuario (una vez este lo autorice). Obviamente los navegadores aún tienen que implementar la especificación de Geolocalización del W3C, que hasta el momento Firefox 3.5, el iPhone OS, Android y Google Chrome, entre otros, ya ofrecen esta opción.

Si nos basamos en la especificación del W3C, para detectar la ubicación del usuario es bastante sencillo:

Quote
if (typeof navigator.geolocation == 'object'){
navigator.geolocation.getCurrentPosition(mostrar_ubicacion);
}

function mostrar_ubicacion(p)
{
alert('posición: '+p.coords.latitude+','+p.coords.longitude );
}

La exactitud dependerá del agente con el cual se intente detectar la ubicación, los móviles que cuentan con GPS obviamente serán mucho más exactos que si se usan las redes WIFI cercanas para adivinar la ubicación.

Tal vez convenga usar geo-location-javascript, un framework que agrupa varias propuestas de Geolocalización (aparte de la del W3C) en un solo lugar. Usarlo es igual de sencillo:

Quote
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback);
}
else{
alert("Functionality not available");
}

function success_callback() {...}
function error_callback() {...}

Base de datos de IP’s vs HTML5
Usar una base de datos de IP’s tiene la ventaja que todo funciona detrás, el usuario no debe autorizar el compartir su ubicación ni debe usar un navegador moderno; lo malo que estos datos son precisos solo a nivel de país y si el hardware del usuario ya cuenta con un GPS no lo estamos aprovechando. Dependiendo de lo que queramos hacer, probablemente el mejor enfoque sea usar una base de datos de IP’s sencilla y a la vez preguntarle al usuario que nos comparta su ubicación.


Las vírgenes tienen muchas navidades pero ninguna Nochebuena.
silviacastillo
Mensajes: 4
Reputación: 0
Mensaje Nº 3 | 6:03 PM
Yo he leido esta monografia al respecto http://www.monografias.com/trabajos30/identificar-clientes-ip-mecanismo-obsoleto/identificar-clientes-ip-mecanismo-obsoleto.shtml
Foro uCoz » Información General » Para los principiantes » Identificar clientes por su IP
Página 1 de 11
Búscar: