将Geo作为国家目标的GEO IP数据库

时间:2014-06-19 10:16:51

标签: geoip

我正在寻找一个GEO IP数据库(类似于MaxMind GeoLite2国家和城市),这将允许我识别用户来自的美国州,以便将特定内容定位到该用户。

有谁知道我如何或在哪里找到这样的数据库/服务或解决方案?

2 个答案:

答案 0 :(得分:1)

除非您对国家/城市的精确度感到满意,否则不要期望高精度。它毕竟是基于IP的地理定位,并且在大多数情况下仅限于ISP提供的数据记录。查看IP位置信息webtool(如http://geoipinfo.org/),您将看到它找到您的大致位置,并且还提供了城市和国家/地区级别的准确性 - 百分比。它使用ip2location数据库进行查找及其精确数据。

答案 1 :(得分:0)

该线程很旧,但是直到今天,我使用了http://api.ipstack.com,并且运行良好。他们在他们的网站上有非常广泛的帮助示例,但基本上,您可以拨打电话,解析数据并获得所需的内容。

  1. 首先,请确保您具有任何/全部包含(名称空间= System.Xml,System.Net,等等,等等)。
  2. 第二,请确保不要在专用网络IP(192.168.xx或10.xxx)上进行测试,因为这将始终返回空白/空字段,并且您会认为某些内容编码有误。
  3. 第三,您将需要ipstack.com的Acess_Key ...您可以设置一个免费帐户(我认为每月需要10,000个请求),并获得访问代码以在下面的字符串中输入以进行API调用。我填写了表格,并在10分钟内免费开始运行。

这对我来说可以跟踪任何页面的访问者:

string IP = "";
string strHostName = "";
string strHostInfo = "";
string strMyAccessKeyForIPStack = "THEYGIVEYOUTHISWHENYOUSETUPFREEACCOUNT";
strHostName = System.Net.Dns.GetHostName();

IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;

IP = addr[2].ToString();

XmlDocument doc = new XmlDocument();
string strMyIPToLocate = "http://api.ipstack.com/" + IP + "?access_key=strMyAccessKeyForIPStack&output=xml";

doc.Load(strMyIPToLocate);
XmlNodeList nodeLstCity = doc.GetElementsByTagName("city");
XmlNodeList nodeLstState = doc.GetElementsByTagName("region_name");
XmlNodeList nodeLstZIP = doc.GetElementsByTagName("zip");
XmlNodeList nodeLstLAT = doc.GetElementsByTagName("latitude");
XmlNodeList nodeLstLON = doc.GetElementsByTagName("longitude");

strHostInfo = "IP is from " + nodeLstCity[0].InnerText + ", " + nodeLstState[0].InnerText + " (" + nodeLstZIP[0].InnerText + ")";
// Then I do what you want with strHostInfo, I put it in a DB myself, but whatever.