如何根据某个知识产权获得国家?
有谁知道一个简单的方法来检索给定的IP地址的国家? 最好以ISO_3166-1
格式?
很多人(包括我的公司)似乎都使用MaxMind GeoIP。
他们有一个免费版本的GeoLite ,它不像付费版本那么准确,但是如果你只是简单的事情,那可能就足够了。
有两种方法:使用Internet服务并使用某种本地列表(可能包含在库中)。 你想要什么取决于你在build什么。
对于服务:
对于列表:
- http://www.maxmind.com/app/geoip_country (如Orion所述 )
-
您可以通过从RIR下载列表来自行推出:
- http://ftp.arin.net/pub/stats/arin/delegated-arin-latest
- http://ftp.ripe.net/ripe/stats/delegated-ripencc-latest
- http://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
- http://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
-
http://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
本自述文件中logging了格式
以下是一个公共API的免费服务: http : //www.hostip.info/use.html
ipinfodb为国家提供免费的IP数据库和API,反之亦然。 他们使用MaxMind的免费数据。 数据每月都会更新,这是一个很好的免费替代scheme,具有相当的准确性。
我不知道hostip.info网站有多准确。 我刚刚浏览了那个网站,报道说我的国家是加拿大。 我在美国和我的办公室使用的ISP只在美国运营。 它确实可以让你更正这个猜测,但是如果你使用这个服务来跟踪国家的网站访问者,你将无法知道数据是否正确。 当然,我只是一个数据点。 我下载了GeoLite国家数据库,这只是一个.csv文件,我的IP地址被正确识别为US。
MaxMind产品系列(付费或免费)的另一个好处是您拥有数据,而不会导致将Web服务呼叫到另一个系统。
最准确的是数字元素NetAcuity …不是免费的,但你得到你所付出的大部分时间…. 数字元素
谷歌的客户端位置返回( 我的例子 )
latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude); location = "IP location: " + getFormattedLocation(); document.getElementById("location").innerHTML = location;
您可以使用为此问题提供的解决scheme。
但它返回一个2位数的国家代码。
试试这个PHP代码
<?php $ip = $_SERVER['REMOTE_ADDR']; $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); $json = json_decode($json,true); $timezone = $json[localTimeZone];?>
你可以使用我的服务, http://ipinfo.io ,为此。 该API返回一个关于IP地址的大量不同的细节:
$ curl ipinfo.io/8.8.8.8 { "ip": "8.8.8.8", "hostname": "google-public-dns-a.google.com", "loc": "37.385999999999996,-122.0838", "org": "AS15169 Google Inc.", "city": "Mountain View", "region": "CA", "country": "US", "phone": 650 }
如果您只是在国家/地区代码之后,则只需在url中添加国家/地区即可:
$ curl ipinfo.io/8.8.8.8/country US
这里有一个你可以使用的通用PHP函数:
function ip_details($ip) { $json = file_get_contents("http://ipinfo.io/{$ip}"); $details = json_decode($json); return $details; } $details = ip_details("8.8.8.8"); echo $details->city; // => Mountain View echo $details->country; // => US echo $details->org; // => AS15169 Google Inc. echo $details->hostname; // => google-public-dns-a.google.com
在这些例子中,我已经使用了IP 8.8.8.8,但是如果你想获得用户IP的详细信息,只需传入$_SERVER['REMOTE_ADDR']
。 更多细节可在http://ipinfo.io/developers上find
您可以使用这样做的Web服务API:
see example of service: http://ip-api.com and usage: http://whatmyip.info