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.
Ferramenta IP Location Tools
Endereço do serviço: http://www.iplocationtools.
Onde pode testar: http://www.anselmeit.com/p/ip-
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.
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/
Ferramenta IP Info DB
Endereço do serviço: http://ipinfodb.com/ip_
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
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.