在当今的软件开发中,集成第三方API来快速实现功能已成为一种高效的方式。本文详细介绍一个由“接口盒子”提供的免费手机号归属地查询API。该接口数据准确,调用简单,适合集成到各类网站、小程序或后台管理系统中。
一、接口简介
这个API的主要功能是查询指定手机号码的详细信息,包括归属省份、城市、运营商、区号、邮编等。对于需要验证手机号有效性、进行地域化营销或用户信息补全的应用场景来说,是一个非常实用的工具。
- 接口地址:
https://cn.apihz.cn/api/ip/shouji.php - 请求方式:支持 GET 和 POST 两种方式。
二、接口申请与认证
在使用此接口前,您需要拥有一个“接口盒子”平台的账号。
- 注册账号
- 获取ID和KEY:登录用户中心后,您可以找到属于您自己的唯一 用户ID(id) 和 通讯秘钥(key)。
重要提示:官方文档中提供的示例ID和KEY(如
id=88888888&key=88888888)为公共测试凭证,所有用户共享调用频次限制,可能会因频繁调用而失败。为保证服务稳定性,强烈建议使用您个人账号的独有ID和KEY。
三、请求参数说明
调用接口时,必须传递以下三个参数:
参数名称 |
参数 |
是否必填 |
说明 |
用户ID |
|
是 |
您在用户中心的数字ID。 |
用户KEY |
|
是 |
用户中心的通讯秘钥,用于身份验证。 |
手机号 |
|
是 |
需要查询的11位手机号码。 |
四、返回参数说明
接口返回标准JSON格式的数据。
- 成功响应(查询成功):
- json
- json
- 复制
{ "code": 200, "haoduan": "1321993", "shengfen": "四川", "chengshi": "绵阳", "fuwushang": "中国联通", "quhao": "0816", "qhdm": "510700", "youbian": "621000" }
- 错误响应(如秘钥错误):
- json
- json
- 复制
{ "code": 400, "msg": "通讯秘钥错误。" }
各返回字段含义如下:
字段名(中文) |
字段(英文) |
说明 |
状态码 |
|
|
信息提示 |
|
当 |
号段 |
|
手机号码的前7位号段。 |
省份 |
|
手机号归属的省份。 |
城市 |
|
手机号归属的城市。 |
运营商 |
|
手机号所属运营商,如中国移动、联通、电信。 |
区号 |
|
归属地的长途电话区号。 |
区划代码 |
|
归属地的行政区划代码。 |
邮编 |
|
归属地的邮政编码。 |
五、调用示例
以下是使用不同编程语言调用该API的详细示例。
GET请求示例URL:
https://cn.apihz.cn/api/ip/shouji.php?id=您的用户ID&key=您的通讯秘钥&phone=13219931963
1. PHP调用示例
PHP可以使用file_get_contents或cURL库。这里展示更灵活的cURL方法。
php
php
复制
<?php // 配置您的API凭证和要查询的手机号 $id = "您的用户ID"; // 替换为您的真实ID $key = "您的通讯秘钥"; // 替换为您的真实KEY $phone = "13219931963"; // 要查询的手机号 // 拼接请求URL $api_url = "https://cn.apihz.cn/api/ip/shouji.php?id=" . $id . "&key=" . $key . "&phone=" . $phone; // 初始化cURL会话 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应结果返回,而不是直接输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过SSL证书验证(仅测试环境建议,生产环境应设为true) // 执行请求并获取返回的JSON数据 $response = curl_exec($ch); // 检查请求是否成功 if (curl_error($ch)) { die('cURL请求发生错误: ' . curl_error($ch)); } // 关闭cURL资源 curl_close($ch); // 将JSON字符串解析为PHP数组或对象 $data = json_decode($response, true); // 设置为true解析为关联数组 // 处理返回数据 if ($data['code'] == 200) { // 查询成功,打印结果 echo "手机号: " . $phone . "<br>"; echo "归属地: " . $data['shengfen'] . "省 " . $data['chengshi'] . "市<br>"; echo "运营商: " . $data['fuwushang'] . "<br>"; echo "区号: " . $data['quhao'] . "<br>"; echo "邮编: " . $data['youbian']; } else { // 查询失败,打印错误信息 echo "查询失败,错误信息: " . $data['msg']; } ?>
2. Python调用示例
Python可以使用内置的urllib库或更流行的第三方requests库。这里使用requests库,需要先安装:pip install requests。
python
python
下载
复制
import requests import json # 配置您的API凭证和要查询的手机号 id = "您的用户ID" # 替换为您的真实ID key = "您的通讯秘钥" # 替换为您的真实KEY phone = "13219931963" # 要查询的手机号 # 接口地址 api_url = "https://cn.apihz.cn/api/ip/shouji.php" # 构建请求参数 params = { "id": id, "key": key, "phone": phone } try: # 发送GET请求 response = requests.get(api_url, params=params) # 确保请求成功(状态码为200) response.raise_for_status() # 解析返回的JSON数据 data = response.json() # 处理返回数据 if data['code'] == 200: # 查询成功,打印结果 print(f"手机号: {phone}") print(f"归属地: {data['shengfen']}省 {data['chengshi']}市") print(f"运营商: {data['fuwushang']}") print(f"区号: {data['quhao']}") print(f"邮编: {data['youbian']}") else: # 查询失败,打印错误信息 print(f"查询失败,错误信息: {data['msg']}") except requests.exceptions.RequestException as e: # 处理网络请求异常 print(f"网络请求出错: {e}") except json.JSONDecodeError as e: # 处理JSON解析异常 print(f"解析返回数据出错: {e}")
六、重要注意事项
- 频率限制:使用个人ID和KEY享有独立的每分钟调用频次限制。公共KEY的频次限制很低,极易触发。每日调用总次数无上限。
- 安全性:请妥善保管您的
key(通讯秘钥),不要将其泄露或直接硬编码在客户端代码(如网页前端、小程序)中,以防被他人盗用。最佳实践是在您的服务器端进行API调用。 - 错误排查:如果调用失败,首先检查
code和msg字段。常见错误是id或key填写错误、手机号格式不正确等。 - 数据更新:手机号段和归属地信息会随时间变化,该接口的数据源会定期更新,但可能存在微小延迟。