在网站建设、网络营销或安全审计等场景中,查询一个域名的ICP备案信息是常见的需求。ICP备案号是中国大陆网站合法运营的重要标识,包含了主办单位性质、备案号、审核时间等关键信息。本文将详细介绍由“接口盒子”提供的免费ICP备案查询API接口,帮助开发者快速、低成本地将此功能集成到自己的应用或系统中。
一、接口核心概述
这是一个完全免费的API接口,旨在帮助开发者查询指定域名的ICP备案信息。
- 核心功能:传入一个域名,返回其备案详情,包括主体性质、备案号、主办单位、审核时间等。
- 重要提示:
- 离线库查询:该接口基于离线数据库进行查询,信息更新可能不如官方实时接口及时。适合对时效性要求不高的场景。
- 免费与限制:接口本身免费,但调用有频次限制。使用公共ID和KEY将共享全局频次限制,强烈建议注册账号获取独享的ID和KEY以保证服务稳定性。
- 优享版:如果需要实时、高并发的查询服务,网站提供了付费的“优享版”接口。
二、接口请求详情
- 请求地址:
https://cn.apihz.cn/api/wangzhan/icp.php - 请求方式: 支持 GET 和 POST。
- 请求参数:
名称 |
参数 |
是否必填 |
说明 |
用户ID |
|
是 |
在用户中心获取的数字ID。 |
用户KEY |
|
是 |
在用户中心获取的通讯秘钥,用于鉴权。 |
域名 |
|
是 |
要查询的域名,不需要带 |
三、返回参数与示例
接口返回统一格式的JSON数据。
- 成功响应示例 (HTTP Status Code: 200)
当查询成功时,会返回完整的备案信息。 - json
- json
- 复制
{ "code": 200, "td": "1-1", "type": "企业", "icp": "蜀ICP备2020030589号-10", "unit": "绵阳耳关明皿网络科技有限公司", "domain": "apihz.cn", "time": "2024-04-01" }
- 失败响应示例 (HTTP Status Code: 400)
当参数错误或鉴权失败时,返回错误信息。 - json
- json
- 复制
{ "code": 400, "msg": "通讯秘钥错误。" }
- 返回参数说明:
code: 状态码。200表示成功,400表示失败。msg: 当code为400时的错误描述。type: 备案主体性质,如“个人”、“企业”。icp: 工信部颁发的备案许可证号。unit: 备案的主办单位名称。
*-domain: 查询的域名。time: 备案审核通过的日期。
四、调用示例(含代码)
以下示例将演示如何使用GET和POST方式进行调用。请务必将示例中的 id和 key替换为您在 接口盒子官网注册后获得的独享凭证。
公共测试凭证(频次受限,仅用于测试):
id: 88888888key: 88888888
1. 浏览器直接访问(GET)
最简单的方式是将参数直接拼接在URL后,在浏览器地址栏中访问。
复制
https://cn.apihz.cn/api/wangzhan/icp.php?id=88888888&key=88888888&domain=apihz.cn
访问后,浏览器将直接显示JSON格式的查询结果。
2. PHP调用示例
以下代码演示了在PHP中使用cURL库进行GET请求。
php
php
复制
<?php // 配置您的API凭证和要查询的域名 $id = '88888888'; // 请替换为您的用户ID $key = '88888888'; // 请替换为您的用户KEY $domain = 'apihz.cn'; // 构建请求URL $api_url = "https://cn.apihz.cn/api/wangzhan/icp.php"; $request_url = $api_url . "?id=" . urlencode($id) . "&key=" . urlencode($key) . "&domain=" . urlencode($domain); // 初始化cURL会话 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应结果返回,而不是直接输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略SSL证书验证(生产环境建议设为true) // 执行请求并获取响应 $response = curl_exec($ch); // 检查请求是否成功 if (curl_errno($ch)) { die('cURL请求发生错误: ' . curl_error($ch)); } // 关闭cURL资源 curl_close($ch); // 解析JSON响应 $data = json_decode($response, true); // 处理返回数据 if ($data['code'] == 200) { // 查询成功,打印备案信息 echo "查询成功!<br/>"; echo "域名: " . $data['domain'] . "<br/>"; echo "备案号: " . $data['icp'] . "<br/>"; echo "主办单位: " . $data['unit'] . "<br/>"; echo "主体性质: " . $data['type'] . "<br/>"; echo "审核时间: " . $data['time'] . "<br/>"; } else { // 查询失败,打印错误信息 echo "查询失败: " . $data['msg']; } ?>
3. Python调用示例
以下代码演示了在Python中使用流行的 requests库进行GET请求。
python
python
下载
复制
import requests # 配置您的API凭证和要查询的域名 id = '88888888' # 请替换为您的用户ID key = '88888888' # 请替换为您的用户KEY domain = 'apihz.cn' # 构建请求URL和参数 api_url = "https://cn.apihz.cn/api/wangzhan/icp.php" params = { 'id': id, 'key': key, 'domain': domain } try: # 发送GET请求 response = requests.get(api_url, params=params) # 解析JSON响应 data = response.json() # 处理返回数据 if data['code'] == 200: # 查询成功,打印备案信息 print("查询成功!") print(f"域名: {data['domain']}") print(f"备案号: {data['icp']}") print(f"主办单位: {data['unit']}") print(f"主体性质: {data['type']}") print(f"审核时间: {data['time']}") else: # 查询失败,打印错误信息 print(f"查询失败: {data['msg']}") except requests.exceptions.RequestException as e: # 处理网络请求异常 print(f"网络请求出错: {e}") except ValueError as e: # 处理JSON解析异常 print(f"解析响应数据出错: {e}")
五、使用流程与注意事项
- 注册账号
- 获取凭证:在用户中心找到您的独享
id和key。 - 集成测试:使用您的独享凭证替换上述示例代码中的测试凭证,进行集成测试。
- 注意事项:
- 遵守频次限制:请遵守接口的调用频率限制,避免过度频繁的请求。
- 错误处理:在生产环境中,务必添加完善的错误处理逻辑(如网络异常、API返回错误等)。
- 数据准确性:由于是离线库,若查询结果与官方信息有出入,应以工信部备案系统为准。