GeoLocalizacion a través de la IP
Hoy en una lista de distribución alguien ha hecho una consulta sobre GeoLocalizacion a través de la IP. La verdad es que he hecho muchas pruebas con diferentes entornos de programación utilizando las librerías que proporciona MaxMind. Por eso en este artículo voy a explicar como implementar un sistema de GeoLocalicacion basado en IP usando PHP y Python.
PHP
Empezaremos por PHP ya que quizá sea la opción mas útil y mas fácil de implementar. En esta ruta podéis descargaros las librerías necesarias y algunos ejemplos:
http://geolite.maxmind.com/download/geoip/api/php/
Por tanto para empezar con el ejemplo nos bajaremos los siguientes archivos:
http://geolite.maxmind.com/download/geoip/api/php/geoipcity.inc
http://geolite.maxmind.com/download/geoip/api/php/geoipregionvars.php
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc
También deberemos bajarnos la base de datos donde se encuentran todas las relaciones entre IP y su localización.
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Por tanto copiamos los archivos .inc en nuestra ruta de pruebas /var/www/prueba y extraemos en GeoLiteCity.dat en la misma ruta. Finalmente creamos un GeoipTest.php con el siguiente código:
Python
La mejor manera de instalar las librerías para python si estáis en un entorno Debian es usar apt-get:
En este caso la instalación guarda los diferentes archivos (librerías y base de datos) en sus rutas por defecto, por tanto nos abstraeremos de esa información (el caso de querer definir una ruta o usar una base de datos determinada usar la definición de GeoIP.Open comentada en el ejemplo).
Para usar las librerías usaremos el siguiente ejemplo GeoipTest.py
Con este código obtendríamos la misma información que en el caso anterior (con PHP).

Existen APis para otros lenguajes?
gracias.
Aqui tienes un listado de las APis disponibles: Apache, C, C#, Java, MS COM Object, Pascal, Perl, PHP, Python, Ruby y VB.Net
http://www.maxmind.com/app/mod_geoip