GeoLite Country para ASP. Conocer el país de una IP

  • Por
Versión gratuita de GeoIP Country para averiguar el país de procedencia de los visitantes de nuestra web.
Vamos a hablar de GeoLite Country, un producto gratuito que nos sirve para conocer el país de procedencia de nuestros visitantes, que se deduce a partir de su dirección IP. Cada dirección IP corresponde a un proveedor de acceso a Internet, localizado en un país. Cada proveedor tiene asignado un rango de direcciones IP para realizar sus actividades. Estos productos tienen una base de datos con esos rangos de direcciones IP que se corresponden a cada proveedor y país.

Este software se puede descargar gratis, pero no es tan preciso como GeoIP Country, la versión avanzada de pago, también desarrollada por MaxMind. Como GeoLite Country es gratuito, se ofrece sin soporte técnico y las actualizaciones de la base de datos son menos frecuentes que la versión de pago. Trataremos en este artículo concretamente la versión gratuita para instalarla en un servidor ASP.

En la página de MaxMind se pueden encontrar tanto las versiones gratuitas como las de pago de GeoIP. Tienen además varios formatos o módulos, para averiguar países o ciudades y un API que se puede utilizar en páginas web para consultar la base de datos de IPs.

La versión gratuita de GeoIP está en http://www.maxmind.com/app/geoip_country

Lo más sencillo es utilizar el API que ofrecen gratuitamente para hacer localizaciones de países. El API está en la dirección http://www.maxmind.com/app/api

Como estamos interesados en la instalación del API en un servidor ASP, de todos los lenguajes en los que se ofrece el API, nos interesa el "MS COM Object" (Objeto COM de Microsoft), que está en la dirección http://www.maxmind.com/app/com

Allí veremos un enlace para descarga gratis, que nos llevará a un directorio donde encontraremos varios archivos. Nosotros hemos seleccionado el archivo GeoIP-COM-1.0.zip. Por supuesto, habría que obtener la versión más nueva disponible. Una vez descargado, podemos descomprimirlo y veremos que incluye varios ficheros, con todo lo que nos hace falta para comenzar nuestra localización de países por IP. Entre lo que encontraremos en este fichero está un archivo .dll que tenemos que instalar en el servidor y una serie de páginas con ejemplos de programación para localizar el país del visitante por su IP. Hay ejemplos de programación en ASP, PHP, Cold Fusion, Perl, Python… También hay un txt con instrucciones para instalar el componente y usarlo correctamente.

Instalar el componente GeoIP

Para instalar un componente COM en el servidor tenemos que realizar una serie de pasos relatados en el artículo Componentes de servidor ASP. Aunque en el txt nos explican también la tarea:

  1. Copiar GeoIPDemo.dat en C:\Archivos de programa\geoip\GeoIPDemo.dat
    (Este directorio podemos cambiarlo a nuestro gusto. Luego, en la programación ASP, indicaremos el directorio concreto donde hayamos colocado el archivo)
  2. Copiar GeoIPCOM.dll en el directorio "system32". Dependiendo de nuestra instalación de Windows este directorio puede estar en uno u otro sitio. Por ejemplo, en Win XP Pro está en C:\windows\system32
  3. Registrar el componente COM, con las instrucciones:
    C:\> cd windows\system32
    C:\windows\system32> regsvr32 GeoIPCOM.dll

De todos modos, muchas veces querremos instalar el componente en un servidor de alojamiento compartido, donde tendremos que realizar acciones distintas. Lo normal es que en el servidor nos indiquen como registrar componentes COM. Seguramente algunos proveedores no lo permitan, pero lo normal es que sí nos dejen instalarlos. En caso que no sea así, tendríamos que pensar en mudarnos de servidor de hosting.

En cuanto a copiar .dat en C:\Archivos de programa\geoip\GeoIPDemo.dat, lógicamente, en un servidor de hosting normal no vamos a poder, porque no vamos a tener acceso a ese directorio. Por lo que tendremos que subir por FTP el archivo y alojarlo en un directorio donde sí podamos subir archivos. Como hemos dicho, posteriormente, en el script ASP para localizar la IP, podremos indicar dónde se ha colocado ese fichero.

Script ASP de prueba del componente

Como decíamos, en el propio paquete de descarga tenemos una serie de ejemplos en varios lenguajes de programación para probar el sistema de localización de IP de GeoLite. Nosotros vamos a utilizar el archivo .asp, que hemos modificado un poco para añadirle unos comentarios y simplificarlo a nuestro gusto.

El código del ejemplo que ha funcionado perfectamente en nuestro servidor local es el siguiente:

<% Response.Buffer = TRUE %>
<html>
<title>GeoIP Lite Test</title>
<body bgcolor=#CCCCDD>
<h1><center>GeoIP Lite Test</center></h1>
<br><center>
<br>
<form action="GeoIPTest.asp" method="POST">
   <table border=0>
      <tr><td>hostname:</td><td><input type=text name=hostname></td></tr>
    </table>
    <input type=submit value="Submit" name=submit>
</form>
<%
    if Request.Form("submit") = "Submit" then
       'si se reciben datos de formulario

       'recibo el nombre del host que queremos ver la ip
    hostname = Request.Form("hostname")

   'creo el objeto geoip
   set geoip = Server.CreateObject("GeoIPCOM.GeoIP")
    'cargo el fichero con los datos de ips y países
    geoip.loadDataFile("C:\Archivos de programa\geoip\GeoIPDemo.dat")
    'obtengo datos sobre el hostname recibido por formulario
    country_code = geoip.country_code_by_name(hostname)
    country_name = geoip.country_name_by_name(hostname)
   
    'mostramos los datos de este host
    Response.Write("<table cellpadding=2 border=1><tr><th colspan=2>Results</th></tr>")
    Response.Write("<tr><td>Hostname</td><td>" + hostname + "</td></tr>")
    Response.Write("<tr><td>ISO 3166 Country Code</td><td>" + country_code + "</td></tr>")
    Response.Write("<tr><td>Full Country Name</td><td>" + country_name + "</td></tr>")
    Response.Write("</table>")

   end if
%>
</center>
</body>
</html>