我正在寻找一个GEO IP数据库(类似于MaxMind GeoLite2国家和城市),这将允许我识别用户来自的美国州,以便将特定内容定位到该用户。
有谁知道我如何或在哪里找到这样的数据库/服务或解决方案?
答案 0 :(得分:1)
除非您对国家/城市的精确度感到满意,否则不要期望高精度。它毕竟是基于IP的地理定位,并且在大多数情况下仅限于ISP提供的数据记录。查看IP位置信息webtool(如http://geoipinfo.org/),您将看到它找到您的大致位置,并且还提供了城市和国家/地区级别的准确性 - 百分比。它使用ip2location数据库进行查找及其精确数据。
答案 1 :(得分:0)
该线程很旧,但是直到今天,我使用了http://api.ipstack.com,并且运行良好。他们在他们的网站上有非常广泛的帮助示例,但基本上,您可以拨打电话,解析数据并获得所需的内容。
这对我来说可以跟踪任何页面的访问者:
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.