最近正在写一个后台评论列表显示IP归属地的代码,快写完才发现以前能用的有道、新浪的ip查询api接口全部失效了。IP138的查询只有免费的区区1000次根本满足不了需要。难道就没有免费的api了么?经过半个晚上的搜索整理,找到三个免费的IP查询API,都是来自大公司的哦!
1.百度opendata
接口URL:http://opendata.baidu.com/api.php?query=42.196.245.48&co=&resource_id=6006&t=1412300361645&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu(点击链接查看返回数据,ie下可能会弹出下载窗口)
返回数据格式:jsonp,json,xml
参数说明:
query:要查询的IP地址
co:未知
resource_id:请求的资源ID,6006不可更改
t:查询时间,在返回的查询结果中出现
ie, oe:猜测应为返回结果的charset,出现乱码时可尝试更改
cb:回调函数名,需要jsonp跨域是需添加此参数。无此参数时返回json格式数据
format:返回数据格式,默认为json,还可返回xml
HTML示例代码:
<html>
<head>
<title>百度IP查询API测试 - jsonp跨域</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div>您查询的IP地址来自:<span id='location'></span></div>
<script>
$(document).ready(function(){
$.getScript("http://opendata.baidu.com/api.php?query=42.196.245.48&co=&resource_id=6006&t=1412300361645&ie=utf8&oe=gbk&cb=mrz&format=json");
})
function mrz(res){
$('#location').html(res['data'][0]['location']);
}
</script>
</body>
</html>
注意:前端调用时必须使用jsonp方式,否则会产生跨域。
php方式:
<?php
$api = 'http://opendata.baidu.com/api.php?query=42.196.245.48&co=&resource_id=6006&t=1412300361645&ie=utf8&oe=utf8&format=json';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$api);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
$res = curl_exec($ch);
$res = json_decode($res,true);
curl_close($ch);
echo $res['data'][0]['location'];
2. pconline太平洋电脑网API
api接口地址:http://whois.pconline.com.cn/jsFunction.jsp?callback=jsShow&ip=114.114.114.114(点击链接查看返回数据,ie下可能会弹出下载窗口)
返回数据格式:jsonp
参数说明:
callback:回调函数名,未指定则回调IPCallBack
ip:需要查询的ip地址
实例代码:请参考第一部分html代码
3.淘宝ip查询API
api接口地址:http://ip.taobao.com/service/getIpInfo.php?ip=myip(点击链接查看返回数据,ie下可能会弹出下载窗口)
返回数据格式json
参数说明:
IP:需要查询的ip地址
示例代码请参考第一部分php代码
2018年8月8日 上午12:51 沙发
绝壁能用了
2018年8月8日 上午12:53 1层
@mr.z 反反复复付付付