全球域名 WHOIS 信息实时查询免费 API 接口教程,支持1000+后缀

一、接口简介

这是接口盒子提供的一个免费 域名WHOIS 信息实时查询接口,覆盖超过 1000+ 域名后缀 ,包括常见的 .com.net.cn.org等顶级域名和国别域名。

接口返回的是原始 WHOIS 信息内容,开发者可以根据自己的需求从中提取注册人、注册商、注册时间、到期时间、DNS 服务器等关键字段。

💡 适用场景:域名归属查询、域名监控、到期提醒、品牌保护、站长工具、批量域名信息采集等。


二、请求地址与请求方式


三、请求参数说明

参数 名称 必填 说明
id 用户 ID 用户中心的数字 ID,例如 id=10000000
key 用户 KEY 用户中心通讯秘钥,例如 key=15he5h15ty854j5sr152hs2
domain 查询域名 要查询的域名,尽量使用主域名,不要带 http(s) ,例如 domain=apihz.cn
type 查询方式 1=优先使用查询缓存(默认),2=直接查询注册局官方,实时性更高但更慢

四、返回参数说明

接口返回 JSON 格式数据,主要包含以下字段:

参数 名称 说明
code 状态码 200表示成功,400表示错误
msg 信息提示 成功或失败的具体提示信息
domain 查询域名 当前查询的域名
whois / data WHOIS 信息 原始 WHOIS 内容,不同注册局格式不同,需自行提取;换行符统一为 \n\r\n

成功返回示例

复制代码
{
  "code": 200,
  "domain": "apihz.cn",
  "whois": "Domain Name: apihz.cn\nROID: 20240319s10001s56425741-cn\nDomain Status: clientUpdateProhibited\nDomain Status: clientTransferProhibited\nRegistrant: 绵阳耳关明皿网络科技有限公司\nRegistrant Contact Email: erguanmingmin@qq.com\nSponsoring Registrar: 腾讯云计算(北京)有限责任公司\nName Server: ns3.dnsv2.com\nName Server: ns4.dnsv2.com\nRegistration Time: 2024-03-19 01:34:31\nExpiration Time: 2028-03-19 01:34:31\nDNSSEC: signedDelegation\n"
}

失败返回示例

复制代码
{
  "code": 400,
  "msg": "通讯秘钥错误。"
}

五、GET 请求示例(官方原版)

直接在浏览器或 HTTP 客户端中请求:

复制代码
https://接口盒子/api/wangzhan/whoisall.php?id=88888888&key=88888888&domain=apihz.cn&type=1

六、POST 请求示例(官方说明)

官方文档中说明 POST 请根据开发语言自行实现,下面分别给出 PHP 和 Python 的完整示例。


七、PHP 调用示例

方式一:cURL GET 请求(推荐,最简单)

复制代码
<?php
$id     = "10000000";      // 用户中心数字ID
$key    = "your_key_here"; // 通讯秘钥
$domain = "apihz.cn";      // 查询域名,不带 http
$type   = 1;               // 1=缓存优先,2=直连注册局
// 构建请求URL
$apiUrl = "https://接口盒子/api/wangzhan/whoisall.php";
$requestUrl = $apiUrl . "?" . http_build_query([
    'id'     => $id,
    'key'    => $key,
    'domain' => $domain,
    'type'   => $type
]);
// 初始化cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $requestUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 本地测试可关闭,生产环境建议开启
$response = curl_exec($ch);
// 错误处理
if (curl_errno($ch)) {
    die("cURL 请求错误:" . curl_error($ch));
}
curl_close($ch);
// 解析JSON
$data = json_decode($response, true);
if ($data['code'] == 200) {
    // 处理换行符
    $whois = str_replace(["\\r\\n", "\\n", "\\r"], PHP_EOL, $data['whois'] ?? $data['data'] ?? '');
    echo "查询域名:" . $data['domain'] . PHP_EOL;
    echo "WHOIS 信息:" . PHP_EOL;
    echo $whois . PHP_EOL;
} else {
    echo "查询失败:" . $data['msg'] . PHP_EOL;
}

方式二:cURL POST 请求

复制代码
<?php
$apiUrl = "https://接口盒子/api/wangzhan/whoisall.php";
$params = [
    'id'     => '10000000',
    'key'    => 'your_key_here',
    'domain' => 'apihz.cn',
    'type'   => 1
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    die("cURL 请求错误:" . curl_error($ch));
}
curl_close($ch);
$data = json_decode($response, true);
if ($data['code'] == 200) {
    $whois = str_replace(["\\r\\n", "\\n"], PHP_EOL, $data['whois'] ?? $data['data'] ?? '');
    echo "查询成功!" . PHP_EOL;
    echo $whois . PHP_EOL;
} else {
    echo "错误:" . $data['msg'] . PHP_EOL;
}

八、Python 调用示例

方式一:requests GET 请求(推荐)

复制代码
import requests
def query_whois(domain, uid, ukey, query_type=1):
    url = "https://接口盒子/api/wangzhan/whoisall.php"
    params = {
        "id": uid,
        "key": ukey,
        "domain": domain,
        "type": query_type
    }
    try:
        response = requests.get(url, params=params, timeout=30)
        response.raise_for_status()
        result = response.json()
        if result.get("code") == 200:
            # 处理换行符
            whois_raw = result.get("whois") or result.get("data", "")
            whois_data = whois_raw.replace("\\r\\n", "\n").replace("\\n", "\n")
            return {
                "success": True,
                "domain": result.get("domain"),
                "whois": whois_data
            }
        else:
            return {
                "success": False,
                "msg": result.get("msg", "未知错误")
            }
    except requests.exceptions.Timeout:
        return {"success": False, "msg": "请求超时"}
    except requests.exceptions.RequestException as e:
        return {"success": False, "msg": f"网络请求异常:{e}"}
    except ValueError:
        return {"success": False, "msg": "返回数据不是合法 JSON"}
if __name__ == "__main__":
    # 替换为自己的 ID 和 KEY
    UID  = "10000000"
    UKEY = "your_key_here"
    res = query_whois("apihz.cn", UID, UKEY, query_type=1)
    if res["success"]:
        print("查询域名:", res["domain"])
        print("WHOIS 信息:")
        print(res["whois"])
    else:
        print("查询失败:", res["msg"])

方式二:requests POST 请求

复制代码
import requests
url = "https://接口盒子/api/wangzhan/whoisall.php"
payload = {
    "id": "10000000",
    "key": "your_key_here",
    "domain": "apihz.cn",
    "type": 1
}
try:
    response = requests.post(url, data=payload, timeout=30)
    response.raise_for_status()
    result = response.json()
    if result["code"] == 200:
        whois = result.get("whois") or result.get("data", "")
        whois = whois.replace("\\r\\n", "\n").replace("\\n", "\n")
        print("查询成功!")
        print(whois)
    else:
        print("查询失败:", result["msg"])
except requests.exceptions.RequestException as e:
    print("请求异常:", e)

九、如何解析原始 WHOIS 数据

因为不同注册局的 WHOIS 格式不一样,接口返回的是原始信息,通常需要自己提取关键字段。这里给一个 Python 简单解析示例:

复制代码
import re
def parse_whois(raw):
    info = {}
    for line in raw.split("\n"):
        if ":" in line:
            k, v = line.split(":", 1)
            info[k.strip()] = v.strip()
    # 常见字段提取
    print("注册人:", info.get("Registrant", ""))
    print("注册商:", info.get("Sponsoring Registrar", ""))
    print("注册时间:", info.get("Registration Time", ""))
    print("到期时间:", info.get("Expiration Time", ""))
    print("DNS 服务器:", [v for k, v in info.items() if "Name Server" in k])
# 在拿到 whois 字符串后调用
# parse_whois(whois)

十、常见问题与注意事项

  1. 编码问题:请求必须使用 UTF-8,否则带中文的域名或参数可能失败。
  2. type 参数选择
    • type=1:优先缓存,速度快,适合批量查询;
    • type=2:直连注册局,实时性高但慢,适合精确校验。
  1. 换行符处理 :返回数据中的换行符可能是 \n\r\n\\r\\n,需要根据语言做替换处理。
  2. 字段差异:不同后缀、不同注册局的 WHOIS 格式不完全一致,提取注册人、邮箱、到期时间时需要做兼容处理。
  3. 异常处理:WHOIS 查询受上游注册局影响,可能出现超时、限流、无响应等情况,代码中一定要加超时和异常捕获。

十一、总结

这个接口最大的优势是免费、支持后缀多、每日无调用上限,非常适合个人开发者、站长工具、域名监控系统等轻量级项目接入。只要注册账号拿到自己的 ID 和 KEY,再用上面的 PHP 或 Python 示例稍作修改,就能快速把全球域名 WHOIS 查询能力集成到自己的系统里。

相关推荐
珠海西格电力3 小时前
西格电力零碳园区管理系统:核心功能全解析,赋能园区低碳智能化落地
大数据·运维·网络·人工智能·信息可视化·能源
এ慕ོ冬℘゜3 小时前
前端核心知识体系进阶:从安全机制、网络协议到原生 JS 实战全解析
前端·网络协议·安全
ZPC82103 小时前
model bingxing
网络·人工智能·网络协议·机器人
非典型Android程序员3 小时前
Binder机制学习总结
android
AI2中文网3 小时前
App Inventor 2 音频播放器 vs 音效 vs 视频播放器:三个媒体组件,选错了App直接卡死
android·音视频·媒体
运维行者_3 小时前
广域网性能监控:分布式IT架构下的链路质量保障
开发语言·网络·分布式·后端·架构·数据库架构
李剑一3 小时前
uni-app x 实现本地 JSON 文件的导入导出(APP端可用)
android·前端·uni-app
CoreTK芯通康EMC整改3 小时前
Type-C 高速接口 ESD 失效深度解析:器件选型 + PCB 布局双重解决方案
大数据·网络·emc·芯通康·pcb电磁兼容
喜欢打篮球的普通人4 小时前
LLVM后端指令选择
android·java·javascript