分享几个免费IP地址查询API接口(完整版)
在开发Web应用时,经常需要通过IP地址获取用户的地理位置信息。本文整理了多个免费且实用的IP地址查询API接口,包括使用方法、返回数据格式和PHP/JavaScript调用示例。
目录
- 淘宝IP地址库
- 新浪IP API
- 126 IP API
- 天气API(批量查询)
- 腾讯IP地址API
- 百度IP地址查询API
- 搜狐IP地址查询接口
- 设计蜂巢IP地址查询接口
- 帮助BJCN IP查询
- ip-api.com
- 各接口对比总结
1. 淘宝IP地址库
接口地址:http://ip.taobao.com/service/getIpInfo.php?ip=IP地址
淘宝IP地址库提供的服务包括:
- 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家、省、市和运营商。
- 用户可以根据自己所在的位置和使用的IP地址更新我们的服务内容。
优势:
- 提供国家、省、市、县、运营商全方位信息,信息维度广,格式规范。
- 省准确度超过99.8%,市准确度超过96.8%,数据质量有保障。
PHP调用示例:
<?php
$ip = "123.125.71.38";
$url = "http://ip.taobao.com/service/getIpInfo.php?ip=" . $ip;
$response = file_get_contents($url);
$result = json_decode($response, true);
if ($result && $result["code"] == 0) {
$data = $result["data"];
echo "国家:" . $data["country"] . "\n";
echo "地区:" . $data["area"] . "\n";
echo "省份:" . $data["region"] . "\n";
echo "城市:" . $data["city"] . "\n";
echo "ISP:" . $data["isp"] . "\n";
} else {
echo "查询失败";
}
?>
返回数据格式:
{
"code": 0,
"data": {
"ip": "123.125.71.38",
"country": "中国",
"area": "华北",
"region": "北京市",
"city": "北京市",
"county": "朝阳区",
"isp": "联通"
}
}
2. 新浪IP API
接口地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址
新浪IP API是最不错的免费IP查询接口之一,返回的数据类型可以自定义格式:
- format=js:返回JavaScript格式(默认)
- format=json:返回JSON格式
- 不传format:返回纯文本格式
PHP调用示例:
<?php
$ip = "123.125.71.38";
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" . $ip;
$response = file_get_contents($url);
$result = json_decode($response, true);
echo "IP:" . $result["ip"] . "\n";
echo "国家:" . $result["country"] . "\n";
echo "省份:" . $result["province"] . "\n";
echo "城市:" . $result["city"] . "\n";
echo "ISP:" . $result["isp"] . "\n";
?>
返回数据格式:
{
"ret": 1,
"start": "59.37.164.179",
"end": "59.37.165.17",
"country": "中国",
"province": "广东",
"city": "深圳",
"district": "",
"isp": "电信",
"type": "",
"desc": ""
}
JavaScript直接调用:
[removed]
function getIpInfo(ip, callback) {
var script = document.createElement("script");
script.src = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=" + ip;
document.head.appendChild(script);
window.remote_ip_info = function(data) {
callback(data);
};
}
[removed]
3. 126 IP API
接口地址:http://ip.ws.126.net/ipquery?ip=IP地址
126提供的IP查询API功能方面不如新浪,但数据相对来说比较准确。
PHP调用示例:
<?php
$ip = "123.125.71.38";
$url = "http://ip.ws.126.net/ipquery?ip=" . $ip;
$response = file_get_contents($url);
// 返回的是JavaScript变量格式
echo $response;
?>
返回数据格式:
var lo="北京市", lc="朝阳区"; var localAddress={city:"朝阳区", province:"北京市"};
4. 天气API(批量查询)
接口地址:https://ip.tianqiapi.com/?ip=IP地址1,IP地址2,...
这是一个非常实用的IP查询接口,特点:
- 没有调用次数、频率和IP限制,请放心使用
- 支持批量查询,最多可查询100个IP地址
- 永久免费,稳定高效
PHP调用示例:
<?php
// 单个IP查询
$ip = "27.193.13.255";
$url = "https://ip.tianqiapi.com/?ip=" . $ip;
$response = file_get_contents($url);
$result = json_decode($response, true);
print_r($result);
// 批量IP查询(最多100个)
$ips = "27.193.13.255,123.125.71.38,8.8.8.8";
$url = "https://ip.tianqiapi.com/?ip=" . $ips;
$response = file_get_contents($url);
$result = json_decode($response, true);
print_r($result);
?>
JavaScript调用示例:
[removed]
fetch('https://ip.tianqiapi.com/?ip=27.193.13.255')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
[removed]
5. 腾讯IP地址API
接口地址:http://fw.qq.com/ipaddress
JavaScript直接调用:
[removed][removed]
[removed]
// 返回的数据格式为:
// var IPData = new Array("IP地址", "", "省", "市", "ISP");
[removed]("你的IP: " + IPData[0] + "
");
[removed]("来自: " + IPData[2] + IPData[3] + "
");
[removed]("ISP: " + IPData[4]);
[removed]
返回数据格式:
var IPData = new Array("114.218.183.139", "", "江苏省", "苏州", "电信");
6. 百度IP地址查询API
接口地址:http://developer.baidu.com/map/ip-location-api.htm
通过百度地图IP定位API获取IP地址对应的地理位置信息,功能强大,可与百度地图结合使用。
JavaScript调用示例:
[removed][removed]
[removed]
var myCity = new BMap.LocalCity();
myCity.get(function(result) {
var cityName = result.name;
console.log("当前城市:" + cityName);
});
[removed]
7. 搜狐IP地址查询接口
接口地址:http://pv.sohu.com/cityjson?ie=utf-8
搜狐提供的IP查询接口,可以获取当前访问者的IP地址和所在城市信息。
JavaScript调用示例:
[removed][removed]
[removed]
// 全局变量 returnCitySN 包含了IP和城市信息
console.log("IP: " + returnCitySN.cip);
console.log("城市ID: " + returnCitySN.cid);
console.log("城市名称: " + returnCitySN.cname);
[removed]
返回数据格式:
returnCitySN = {"cip": "58.210.119.10", "cid": "320000", "cname": "江苏省"};
8. 设计蜂巢IP地址查询接口
接口地址:http://www.hujuntao.com/api/ip/ip.php
9. 帮助BJCN IP查询
接口地址:http://www.help.bj.cn/api/ip?ip=IP地址
IP地址查询反馈:地区+省+市+区+ISP,JSON格式,UTF-8编码
PHP调用示例:
<?php
$ip = "61.170.135.3";
$url = "http://www.help.bj.cn/api/ip?ip=" . $ip;
$response = file_get_contents($url);
$result = json_decode($response, true);
echo "状态:" . $result["status"] . "\n";
echo "国家:" . $result["country"] . "\n";
echo "省份:" . $result["province"] . "\n";
echo "城市:" . $result["city"] . "\n";
echo "区县:" . $result["district"] . "\n";
echo "ISP:" . $result["isp"] . "\n";
?>
返回数据格式:
{
"status": "0",
"info": "中国",
"country": "中国",
"province": "上海市",
"city": "上海市",
"district": "浦东新区",
"isp": "电信"
}
10. ip-api.com(国外)
接口地址:http://ip-api.com/json/?fields=520191&lang=zh-CN
国外知名的IP查询API,支持中文显示。
返回数据格式:
{
"status": "success",
"country": "中国",
"regionName": "北京市",
"city": "北京",
"isp": "China Unicom",
"query": "123.125.71.38"
}
各接口对比总结
| 接口 | 批量查询 | 调用限制 | 返回格式 | 准确度 | 推荐指数 |
|---|---|---|---|---|---|
| 淘宝IP地址库 | 不支持 | 有频率限制 | JSON | 99.8% | ★★★★★ |
| 新浪IP API | 不支持 | 较少限制 | JS/JSON | 95% | ★★★★★ |
| 天气API | 支持100个 | 无限制 | JSON | 90% | ★★★★★ |
| 126 IP API | 不支持 | 未知 | JS | 90% | ★★★★ |
| 腾讯IP API | 不支持 | 未知 | JS | 85% | ★★★★ |
| 帮助BJCN | 不支持 | 未知 | JSON | 90% | ★★★★ |
| ip-api.com | 不支持 | 150次/分钟 | JSON | 90% | ★★★★ |
选择建议
- 国内项目推荐:新浪IP API(免费、稳定、支持跨域)
- 需要批量查询:天气API(tianqiapi.com)
- 需要高准确度:淘宝IP地址库
- 纯前端调用:搜狐、腾讯、新浪(支持JSONP)
- 国际项目:ip-api.com
注意事项
- 免费接口可能存在不稳定情况,建议在生产环境中加入错误处理和重试机制。
- 对于高并发场景,建议搭建自己的IP查询服务或使用付费API。
- 部分接口的准确性可能随时间变化,建议定期验证数据准确性。
- 使用时请遵守各API的使用条款和调用频率限制。

发表评论 取消回复