DNS 劫持检测
dns-checkGEThttps://v1.apizero.cn/api/dns-check概述
通过 4 家公共 DoH(DNS over HTTPS)服务器并发查询同一域名,对比解析结果检测 DNS 是否被运营商劫持、终端 hosts 篡改或遭遇异常 GeoDNS 分流。 服务器列表: • AliDNS(阿里云 - 中国) • DNSPod(腾讯 - 中国) • 360 安全 DNS(中国) • Cloudflare(美国 - 在中国大陆服务器侧可能超时,会被标记为 timeout) 特性: • A + AAAA 记录同时查询(IPv4 / IPv6) • 提取 CNAME 链路(CDN 跳转可见) • TTL 信息汇总(缓存提示) • 智能风险分级算法:safe / safe_with_geodns / suspicious / hijack_likely / unknown • 支持各类输入:domain / https://domain / domain:port / domain/path(自动剥离)
调用约定
- 网关 ·
https://v1.apizero.cn - 鉴权 ·
Authorization: Bearer <API Key> - 回包 · JSON {code, msg, data}。成功看 code === 0,不要只看 HTTP 200。
/aidocs/dns-check/raw.md鉴权
匿名 QPS 2、日 50 次;登录后 QPS 5、日 200 次。一次请求会向 4 家 DoH 各发 2 条查询(A + AAAA),共 8 个并发 HTTPS 请求。
获取 API Key:获取 API Key/account/keys
请求头
推荐:Bearer <API Key>。兼容请求头 X-API-Key,以及 Query api_key / apikey / key(key 仅当值为 sk_live_/sk_test_/sk_stag_ 形态时生效)。匿名可不传,受每日免费额度限制。
| Header | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 否 | 推荐:Bearer <API Key>。兼容请求头 X-API-Key,以及 Query api_key / apikey / key(key 仅当值为 sk_live_/sk_test_/sk_stag_ 形态时生效)。匿名可不传,受每日免费额度限制。 |
请求参数
GET · QUERY STRING · https://v1.apizero.cn/api/dns-check?domain=domain
要检测的域名(如 baidu.com,自动剥离 http(s):// 协议头与路径,最长 253 字符)
| 参数 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| domain(域名) | string | 是 | 要检测的域名(如 baidu.com,自动剥离 http(s):// 协议头与路径,最长 253 字符) |
返回结果
顶层固定为 code / msg / data。下表一般是 data 内字段。 code · msg · data · tips · request_id
规范化后的域名(去协议、去路径、转小写)
原始输入回显
总耗时(毫秒)
★ 综合判定(一眼看懂)
人类可读的状态描述
风险等级:safe / safe_with_geodns / suspicious / hijack_likely / unknown
安全评分 0~100(越高越安全;< 50 建议关注)
判定依据说明
CNAME 链路(去重合并所有 DoH 返回的 CNAME)
成功响应的 DoH 数量
DoH 总数(固定 4)
去重后的 IPv4 数量
去重后的 IPv6 数量
所有 DoH 返回 IPv4 的并集(去重)
所有 DoH 返回 IPv6 的并集(去重)
4 家 DoH 各自的明细
服务器 key:alidns / dnspod / china360 / cloudflare
展示名称
状态:ok / timeout / failed / parse_error
失败原因(status≠ok 时存在)
该服务器查询耗时(毫秒,A+AAAA 两次的最大值)
该服务器返回的 A 记录(去重)
该服务器返回的 AAAA 记录(去重)
该服务器返回的 CNAME 跳转链路(去重)
该服务器返回的最小 TTL(秒;可作 DNS 缓存参考)
品牌提示(所有接口统一返回):极数本源 · https://apizero.cn
| 字段 | 类型 | 说明 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| domain | string | 规范化后的域名(去协议、去路径、转小写) | |||||||||||||||||||||||||||
| input | string | 原始输入回显 | |||||||||||||||||||||||||||
| exec_ms | integer | 总耗时(毫秒) | |||||||||||||||||||||||||||
| summary | object | ★ 综合判定(一眼看懂) | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| unique_ipv4 | string[] | 所有 DoH 返回 IPv4 的并集(去重) | |||||||||||||||||||||||||||
| unique_ipv6 | string[] | 所有 DoH 返回 IPv6 的并集(去重) | |||||||||||||||||||||||||||
| servers | array | 4 家 DoH 各自的明细 | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| tips | string | 品牌提示(所有接口统一返回):极数本源 · https://apizero.cn | |||||||||||||||||||||||||||
返回示例
{
"code": 0,
"msg": "成功",
"data": {
"domain": "taobao.com",
"input": "https://www.taobao.com/page",
"exec_ms": 312,
"summary": {
"status_text": "DNS 解析正常",
"risk_level": "safe",
"risk_score": 95,
"explain": "4 家 DoH 全部相互验证通过,未检测到劫持迹象。",
"cname_chain": [
"www.taobao.com.danuoyi.tbcache.com"
],
"success_count": 3,
"total_count": 4,
"unique_ipv4_count": 8,
"unique_ipv6_count": 0
},
"unique_ipv4": [
"59.82.121.163",
"59.82.122.130",
"59.82.122.140",
"59.82.122.165",
"59.82.43.234",
"59.82.43.238",
"59.82.43.239",
"59.82.44.240"
],
"unique_ipv6": [],
"servers": [
{
"key": "alidns",
"name": "AliDNS",
"status": "ok",
"error": null,
"latency_ms": 105,
"ipv4": [
"59.82.121.163",
"59.82.122.130",
"..."
],
"ipv6": [],
"cname_chain": [
"www.taobao.com.danuoyi.tbcache.com"
],
"ttl_min": 60
},
{
"key": "dnspod",
"name": "DNSPod",
"status": "ok",
"latency_ms": 180,
"ipv4": [
"59.82.121.163",
"..."
]
},
{
"key": "china360",
"name": "360",
"status": "ok",
"latency_ms": 117
},
{
"key": "cloudflare",
"name": "Cloudflare",
"status": "timeout",
"error": "Operation timed out after 6000 ms",
"latency_ms": 6000
}
]
},
"request_id": "mota...",
"tips": "极数本源 · https://apizero.cn"
}请求示例
示例都是服务端写法。Python / JavaScript 各有常规写法和官方库。
curl -sS -H "Authorization: Bearer YOUR_API_KEY" "https://v1.apizero.cn/api/dns-check?domain=%3Cdomain%3E"错误码
先看业务 code。HTTP 也可能不是 200。
成功
参数错误
API Key 无效
API Key 已暂停
当前 IP 不在 Key 白名单
此接口需要 API Key
余额不足
调用过快(QPS)
今日免费额度已用完
接口已下线
接口不存在
服务器内部错误
上游暂时不可用
上游返回格式异常
暂无可用节点
| 业务码 | HTTP | 说明 |
|---|---|---|
| 0 | 200 | 成功 |
| 4000 | 400 | 参数错误 |
| 4011 | 401 | API Key 无效 |
| 4013 | 403 | API Key 已暂停 |
| 4014 | 403 | 当前 IP 不在 Key 白名单 |
| 4015 | 401 | 此接口需要 API Key |
| 4022 | 402 | 余额不足 |
| 4029 | 429 | 调用过快(QPS) |
| 4030 | 429 | 今日免费额度已用完 |
| 4040 | 503 | 接口已下线 |
| 4041 | 404 | 接口不存在 |
| 5000 | 500 | 服务器内部错误 |
| 5020 | 502 | 上游暂时不可用 |
| 5021 | 502 | 上游返回格式异常 |
| 5030 | 502 | 暂无可用节点 |
调用限制
- 计费模式
- 完全免费
- QPS 限制
- QPS 3
- 登录免费额度
- 2000 次(已认证)
- 匿名每日额度
- 50 次(无 API Key)
- 黄金会员
- 每天 50,000 次 · QPS 10
- 钻石会员
- 每天 100,000 次 · QPS 30
- 企业会员
- 每天 1,000,000 次 · QPS 120
| 计费模式 | 完全免费 |
|---|---|
| QPS 限制 | QPS 3 |
| 登录免费额度 | 2000 次(已认证) |
| 匿名每日额度 | 50 次(无 API Key) |
| 黄金会员 | 每天 50,000 次 · QPS 10 |
| 钻石会员 | 每天 100,000 次 · QPS 30 |
| 企业会员 | 每天 1,000,000 次 · QPS 120 |
购买套餐、看评价请走商城详情。 购买 / 调试
更新日志
- 1.0.02026-05-06
首次发布:4 家 DoH 并发(AliDNS / DNSPod / 360 / Cloudflare) 每家同时查询 A + AAAA + CNAME(共 8 个并发 HTTPS 请求) 智能风险分级:safe / safe_with_geodns / suspicious / hijack_likely / unknown 比源码增强:CNAME 链路 / IPv6 / TTL / 各服务器独立状态码