这个网站服务器居然在刚果,确实让人想不到。提供了一个非常好的服务。这个api能够提供非常多的信息,除了基本的国家、省份和城市之外,还包括所处大洲、国家代码、地区ISO、街道信息、邮编、经纬度、时区、本国货币、移动服务商、是否移动端、是否使用了代理等等。

文档地址-->https://ip-api.com/docs

根据自己的需求选择要返回的参数。
ip-api

自定义参数链接有两种形式,一种采用参数名叠加,另一种直接用数字。文档非常贴心地直接生成了转化链接。

ip-api

当然,还能设置语言,可以添加语言post参数,这个就不多解释了。下面才是重点。

使用ip-api获得自己想要的信息

文档本身提供有使用示例
ip-api

稍加修改就可以根据访客ip获得各种信息。下面只是抓取了访客的ip、所在国家、省份和城市。

// 获取真实ip
function get_real_ip(){
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){      
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){        
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];  // 和服务器握手的ip
    }
    return $ip;
}

// 下面是API的用法,文档链接:https://ip-api.com/docs/api:batch 页面底下有php的例子
$realip = get_real_ip();
$ips = [$realip];
$post_to_url = 'http://ip-api.com/batch'; // 获取全部参数(见文档)
//$post_to_url = 'http://ip-api.com/batch?fields=status,message,country,regionName,city,proxy,query'; // 获取指定参数
$options = [
	'http' => [
		'method' => 'POST',
		'user_agent' => 'Batch-Example/1.0',
		'header' => 'Content-Type: application/json',
		'content' => json_encode($ips)
	]
];
$response = file_get_contents($post_to_url, false, stream_context_create($options)); // 抓取并返回页面内容
$ipinfo = json_decode($response, true); // 解码成数组形式
print_r($ipinfo);

打印结果:
ip-api

至于想用这些数据做什么,主要看个人了。以上。