php調用免費接口查詢IP歸屬地
淘寶查詢接口(較慢)
$url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
//用curl發送接收數據
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_ENCODING, 'utf8');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$location = curl_exec($ch);
$location = json_decode($location);
curl_close($ch);
$ip_location = '';
if(!empty($location) && $location->code == 0) {
$ipdata = $location->data;
//國家
if ($ipdata->country != "XX") {
$ip_location = $ip_location . $ipdata->country;
}
//地區
if ($ipdata->region != "XX") {
$ip_location = $ip_location . $ipdata->region;
}
//城市
if ($ipdata->city != "XX" && $ipdata->city != $ipdata->region) {
$ip_location = $ip_location . $ipdata->city;
}
//縣級
if ($ipdata->county != "XX" && $ipdata->county != $ipdata->city) {
$ip_location = $ip_location . $ipdata->county;
}
//網絡
if ($ipdata->isp != "XX" && $ipdata->isp != $ipdata->city) {
$ip_location = $ip_location . $ipdata->isp;
}
}
return($ip_location);
126接口
$ch = curl_init();
$url = 'http://ip.ws.126.net/ipquery';
$header = array(
"CLIENT-IP:$ip",
"X-FORWARDED-FOR:$ip"
);
//用curl發送接收數據
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$location = curl_exec($ch);
curl_close($ch);
//轉碼
$location = mb_convert_encoding($location, 'utf-8','GB2312');
//以“”爲分界符轉換成數組
$location = explode('"',$location);
$ip_location = '';
if ($location && !empty($location[7])){
$ip_location .= $location[7];
}
if ($location && !empty($location[5])){
$ip_location .= $location[5];
}
return $ip_location;
其他接口(這個較上兩種更好用)
$ch = curl_init();
$url = 'https://whois.pconline.com.cn/ipJson.jsp?ip='.$ip;
//用curl發送接收數據
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//請求爲https
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$location = curl_exec($ch);
curl_close($ch);
//轉碼
$location = mb_convert_encoding($location, 'utf-8','GB2312');
//var_dump($location);
//截取{}中的字符串
$location = substr($location, strlen('({')+strpos($location, '({'),(strlen($location) - strpos($location, '})'))*(-1));
//將截取的字符串$location中的‘,’替換成‘&’ 將字符串中的‘:‘替換成‘=’
$location = str_replace('"',"",str_replace(":","=",str_replace(",","&",$location)));
//php內置函數,將處理成類似於url參數的格式的字符串 轉換成數組
parse_str($location,$ip_location);
return $ip_location['addr'];