如何根据某个IP获得国家/地区?
时间:2020-03-05 18:37:29 来源:igfitidea点击:
有谁知道一种简单的方法来检索给定IP地址的国家/地区?最好采用ISO_3166-1格式?
解决方案:
这是一个带有公共API的不错的免费服务:
http://www.hostip.info/use.html
很多人(包括我的公司)似乎都在使用MaxMind GeoIP。
他们有一个免费版本的GeoLite,它不如付费版本准确,但是如果我们只是简单一些,那可能就足够了。
我不知道hostip.info网站的准确性如何。我刚刚访问了该网站,并报告说我的国家是加拿大。我在美国,而我的办公室使用的ISP仅在美国运营。它的确可以纠正猜测,但是,如果我们使用此服务按国家/地区跟踪网站访问者,则我们将无法知道数据是否正确。当然,我只是一个数据点。我下载了GeoLite国家数据库,它只是一个.csv文件,并且我的IP地址已正确标识为美国。
MaxMind产品系列(收费或者免费)的另一个好处是我们拥有数据,而不会因调用另一个系统的Web服务而导致性能下降。
有两种方法:使用Internet服务和使用某种本地列表(可能包装在库中)。我们想要什么取决于我们要构建的东西。
服务:
- http://www.hostip.info/use.html(如Mark所述)
- http://www.team-cymru.org/Services/ip-to-asn.html
对于列表:
- http://www.maxmind.com/app/geoip_country(如Orion所述)
- ftp.ripe.net/ripe/stats/delegated-ripencc-latest
- ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
- ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
- ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest该格式记录在本自述文件中
最准确的是Digital Elements NetAcuity ...不是免费的,但是我们大部分时间都能获得所需要的.... Digital Element
ipinfodb提供了免费的数据库和API,可用于向国家/地区提供IP,反之亦然。他们使用来自MaxMind的免费数据。数据每个月都会更新,这是一个不错的免费替代工具,而且准确性很高。
google的clientlocation返回(我的示例)
latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude); location = "IP location: " + getFormattedLocation(); document.getElementById("location").innerHTML = location;