O que é Geolocalização por IP ou GeoIP ?

Geoprocessamento. Onde você está?

 

 

O que é Geoprocessamento por IP?

Este conceito não é muito novo mas não vejo muitas pessoas falando sobre. Trata-se de uma técnica para descobrir informações sobre a localização física, no planeta, de um IP (Internet Protocol). Existem várias empresas que oferecem serviços de geolocalização (ou geo-referenciamento) por IP. Normalmente oferecem interfaces de acesso via REST e retornam XML e disponível em várias linguagens. Estes serviços são bem flexíveis. Alguns oferecem recursos gratuitos, mas são limitados em quantidade de usos, ou obrigam a colocar propagandas. Eu me cadastrei em alguns em modo TRIAL, por isto as aplicações que fiz para testar estão funcionando.

Ferramenta IP Location Tools
Endereço do serviço: http://www.iplocationtools.com/api.html
Onde pode testar: http://www.anselmeit.com/p/ip-geolocalizacao.htm
Funcional: SIM
API oferecida em que linguagens: JavaScript
Pago: Sim

Observações.:
Eles têm também uma página própria para testes:
http://www.iplocationtools.com/api.html
Eles não conseguiram exibir o estado do Rio de Janeiro para o meu IP.
Na verdade eles não acharam meu servidor. Utilizo o Serviço de internet de uma empresa chamada XPTO. Ao invés de achar a XPTO eles acharam o “COMITE GESTOR DA INTERNET NO
BRASIL” que é um nível acima. Acho que é por isso que eles não encontraram o estado do Rio de Janeiro.

Ferramenta MAXMIND
Endereço do serviço: http://www.maxmind.com
Onde pode testar: http://www.maxmind.com/app/isp
Funcional: SIM
API oferecida em que linguagens: C, PHP (Pure), Java, Perl (XS), Perl (Pure), Apache, Python, MS COM, C#, Pascal, Ruby,
Pago: Sim

Observações.:
Eles exibem as informações no nível do ISP corretamente, diferente da ipLocationTools.
Eles oferecem uma página de benchmark http://www.maxmind.com/app/benchmark

Ferramenta IP Info DB
Endereço do serviço: http://ipinfodb.com/ip_location_api.php
Onde pode testar: http://ipinfodb.com/index.php
Funcional: Sim
API oferecida em que linguagens: PHP, Javascript, Ruby, Python e ASP. Mas oferecem consultas via REST que torna facilmente utilizavel via .NET
Pago: Sim

Observações:
Muito bacana e flexível, mas não exibiu o Estado do Rio de Janeiro. Exibiu o país e descobriu que meu host é a XPTO. Reportei o problema para eles. Eles parecem utilizer o serviço da IP2Location.

Ferramenta Quova

Endereço do serviço: http://developer.quova.com/
Onde pode testar: Utilize o código abaixo
Funcional: Sim
API oferecida em que linguagens: PHP, Python, Java, Ruby, Perl,  C#. Mas as consultas são feitas com REST que auxilia o uso em quase todas as linguagens comerciais.
Pago: Sim

Observações:
Eu cheguei a fazer uma aplicação com meu cadastro e senhas e contra-senhas disponibilizadas pelo service Quova. De todos os serviços que pesquisei este é o mais maduro.

Onde encontro uma aplicação de exemplo de geolocalização por IP?
Abaixo você pode encontrar um exemplo. Para executar este exemplo é obrigatório o cadastro no site da empresa que oferece o serviço
// Aplicação ANSELMEGEOIP.EXE
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Security.Cryptography;
namespace QuovaRESTSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write(“Entre com um número de IP: “);
            string ip = Console.ReadLine().Trim();
            string resultadoXML = default(string);
            string service = “http://api.quova.com/”;
            string version = “v1/”;
            string method = “ipinfo/”;
            string ipAddress = ip;
            string apikey = “100.aej8whetsr3enu2ea8ee”;
            string secret = “vWhvrZvy”;
            string sig = MD5GenerateHash(apikey + secret + (Int32)(DateTime.UtcNow – new DateTime(1970, 1, 1)).TotalSeconds);
            string fullURL = service + version + method + ipAddress + “?apikey=” + apikey + “&sig=” + sig + “&format=xml”;
            // Create the web request
            HttpWebRequest request = WebRequest.Create(fullURL) as HttpWebRequest;
            // Get response
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                // Get the response stream
                StreamReader reader = new StreamReader(response.GetResponseStream());
                // Write response to the console
                resultadoXML =reader.ReadToEnd();
            }
            using (StreamWriter sw = new StreamWriter(“anselmelocalizacao.xml”))
            {
                sw.WriteLine(resultadoXML);
            }
        }
        private static string MD5GenerateHash(string strInput)
        {
            // Create a new instance of the MD5CryptoServiceProvider object.
            MD5 md5Hasher = MD5.Create();
            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(strInput));
            // Create a new Stringbuilder to collect the bytes and create a string.
            StringBuilder sBuilder = new StringBuilder();
            // Loop through each byte of the hashed data and format each one as a hexadecimal string.
            for (int nIndex = 0; nIndex < data.Length; ++nIndex)
            {
                sBuilder.Append(data[nIndex].ToString(“x2”));
            }
            // Return the hexadecimal string.
            return sBuilder.ToString();
        }
    }
}
Como funciona o AnselmeGeoIP.exe?
É uma aplicação console muito simples que pergunta seu endereço IP.
Se for de sua preferencia, insira vários endereços IP para testar.
Será gerado um arquivo chamado anselmelocalization.xml.
Abra este arquivo no Internet Explorer.



Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

0 comentário em “O que é Geolocalização por IP ou GeoIP ?

Deixe um comentário