如何根据某个知识产权获得国家?

有谁知道一个简单的方法来检索给定的IP地址的国家? 最好以ISO_3166-1格式?

很多人(包括我的公司)似乎都使用MaxMind GeoIP。

他们有一个免费版本的GeoLite ,它不像付费版本那么准确,但是如果你只是简单的事情,那可能就足够了。

有两种方法:使用Internet服务并使用某种本地列表(可能包含在库中)。 你想要什么取决于你在build什么。

对于服务:

对于列表:

以下是一个公共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