本接口提供IP地址/域名的归属地查询服务,支持IPv4地址查询、域名自动解析后查询,返回包含国家、省份、城市、运营商等详细信息的JSON格式数据。
接口优先级:主接口 → 备用接口1 → 备用接口2 → 备用接口3 → 备用接口4,不同接口返回字段完整性不同,空值/未知字段会自动过滤。
| 项目 | 说明 |
|---|---|
| 接口地址 | http://ping.4759.cn/api/ip.php |
| 请求方式 | GET |
| 返回格式 | JSON(UTF-8编码) |
| 跨域支持 | 支持(允许所有域名调用) |
| 调用限制 | 单授权码最多20次/分钟(防止恶意刷接口) |
| 授权要求 | 必须携带有效的key参数(授权码),否则返回401未授权 |
| 字段特性 | 主接口返回字段最全,备用接口部分字段缺失,空值/未知字段自动隐藏;电话区号仅展示接口原生返回值,无则自动过滤(无预设映射) |
| 参数名 | 是否必填 | 类型 | 说明 | 示例值 |
|---|---|---|---|---|
| key | 是 | 字符串 | API授权码(联系管理员获取) | key_1234567890abcdef1234567890abcdef_9876543210 |
| ip | 是 | 字符串 | 要查询的IPv4地址或域名(域名会自动解析为IP后查询) | 123.161.169.10 / www.baidu.com |
| format | 否 | 字符串 | 返回格式,仅支持json(默认值),预留扩展其他格式 |
json |
| 层级 | 参数名 | 类型 | 说明 |
|---|---|---|---|
| 顶级 | code | 整数 | 状态码(200=成功,400=参数错误,401=未授权,403=授权封禁,404=域名解析失败,429=调用超限,500=接口异常) |
| 顶级 | msg | 字符串 | 状态描述(成功/失败原因) |
| 顶级 | data | 对象 | 查询结果数据(仅code=200时有值,空值/未知字段会自动过滤) |
| data层 | input | 字符串 | 原始输入的IP/域名 |
| data层 | ip | 字符串 | 最终查询的IPv4地址(域名会解析为IP) |
| data层 | domain_parse_msg | 字符串 | 域名解析提示(非域名查询时为空) |
| data层 | country | 字符串 | 国家/地区 |
| data层 | province | 字符串 | 省份/直辖市 |
| data层 | city | 字符串 | 城市(含区县,无区县则只显示城市) |
| data层 | isp | 字符串 | 网络运营商(如电信、联通、移动) |
| data层 | big_area | 字符串 | 大区(如华北、华东、华南等)备用接口返回 |
| data层 | zip_code | 字符串 | 邮政编码(仅接口原生返回时有值) |
| data层 | telcode | 字符串 | 电话区号(仅接口原生返回时有值,无则自动过滤)部分备用接口返回 |
| data层 | lng | 字符串 | 经度备用接口返回 |
| data层 | lat | 字符串 | 纬度备用接口返回 |
| data层 | continent | 字符串 | IP所属洲仅主接口返回 |
| data层 | district | 字符串 | 区县仅主接口返回完整 |
| data层 | zipcode | 字符串 | 邮政编码(主接口字段,等同于zip_code) |
| data层 | areacode | 字符串 | 国家代码(主接口字段,非电话区号)仅主接口返回 |
| data层 | adcode | 字符串 | 行政区划代码仅主接口返回 |
| 状态码 | 说明 | 解决方案 |
|---|---|---|
| 200 | 查询成功 | 正常解析data字段即可(空值字段会自动过滤) |
| 400 | 参数错误 | 检查是否传入ip参数,参数是否为空 |
| 401 | 未授权 | 检查是否携带有效的key(授权码)参数 |
| 403 | 授权码已封禁 | 联系管理员解封或更换授权码 |
| 404 | 域名解析失败 | 确认域名是否正确,或该域名是否有IPv4解析记录 |
| 429 | 调用频率超限 | 等待1小时后再调用,或联系接口提供方调整限制 |
| 500 | 数据源接口异常 | 稍等片刻重试,若持续失败可联系接口提供方排查 |
示例1:带授权码的正常调用
请求地址:http://ping.4759.cn/api/ip.php?key=key_1234567890abcdef1234567890abcdef_9876543210&ip=123.161.169.10
返回结果:
{
"code": 200,
"msg": "查询成功",
"data": {
"input": "123.161.169.10",
"ip": "123.161.169.10",
"country": "中国",
"province": "河南",
"city": "驻马店驿城区",
"isp": "中国电信",
"continent": "亚洲",
"zipcode": "463900",
"areacode": "CN",
"adcode": "411702"
}
}
示例2:缺少授权码(返回401未授权)
请求地址:http://ping.4759.cn/api/ip.php?ip=123.161.169.10
返回结果:
{
"code": 401,
"msg": "未授权:缺少有效的API授权码(key参数),由 4759.cn 提供服务",
"data": null
}
<?php
/**
* PHP调用IP查询API示例
*/
// 接口配置
$apiUrl = 'http://ping.4759.cn/api/ip.php';
$apiKey = 'key_1234567890abcdef1234567890abcdef_9876543210'; // 你的授权码
$target = 'www.baidu.com'; // 要查询的IP/域名
// 拼接请求URL(新增key参数)
$requestUrl = $apiUrl . '?key=' . urlencode($apiKey) . '&ip=' . urlencode($target);
// 初始化curl
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $requestUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false
]);
// 发起请求并处理结果
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result['code'] == 200) {
echo "查询成功:" . json_encode($result['data'], JSON_UNESCAPED_UNICODE);
} else {
echo "查询失败:{$result['msg']}(状态码:{$result['code']})";
}
?>
<script>
/**
* 前端调用IP查询API示例
*/
const apiKey = 'key_1234567890abcdef1234567890abcdef_9876543210'; // 你的授权码
const apiUrl = 'http://ping.4759.cn/api/ip.php';
const target = '8.8.8.8';
// 拼接请求URL(新增key参数)
const requestUrl = `${apiUrl}?key=${encodeURIComponent(apiKey)}&ip=${encodeURIComponent(target)}`;
// 发起请求
fetch(requestUrl)
.then(response => response.json())
.then(result => {
if (result.code === 200) {
console.log('查询结果:', result.data);
} else {
console.error('查询失败:', result.msg);
}
})
.catch(error => {
console.error('请求失败:', error);
});
</script>
areacode为国家代码(如CN),非电话区号;电话区号字段为telcode,仅接口原生返回时有值;areacode但没有电话区号?areacode是主接口返回的国家代码(如CN),并非电话区号;电话区号字段为telcode,仅部分备用接口会原生返回,无则自动过滤。