DNS 传播检测 API
同时向 Google、Cloudflare、阿里、DNSPod、Quad9、AdGuard、NextDNS 等公共 DoH 查询同一记录,检查修改 DNS 后各地是否已生效、答案是否一致
数据来源:公共 DoH(DNS over HTTPS)JSON 接口
返回统一的 JSON 格式 { code, message, cached, stale, updatedAt, data },支持跨域,免注册每天可免费调用 100 次,注册后每天 10000 次。
多个公共 DNS 并发查询,对比解析结果是否一致
GET /api/dns/propagation
请求参数
domain(必填):要检测的域名(支持中文域名,允许 _dmarc 这类下划线标签;不接受 IP),示例github.comtype:记录类型:A / AAAA / CNAME / MX / TXT / NS,示例A
返回字段
domain(string):查询的域名(ASCII 形式,中文域名为 punycode)type(string):查询的记录类型consistent(boolean):所有成功响应的源答案是否完全一致(比较记录值集合与状态,不比较 TTL;出错的源不参与)。注意:使用 GeoDNS / CDN 的域名在不同地区本就会返回不同 IP,此时不一致是正常现象,不代表未生效total(number):查询的源数量responded(number):成功得到 DNS 答复的源数量(含 nxdomain、empty)failed(number):查询失败(超时、HTTP 错误、SERVFAIL 等)的源数量majority(object|null):最多源给出的答案(即 groups 的第一组);全部失败时为 nullmajority.status(string):该答案的状态:ok 有记录 / empty 域名存在但无该类型记录 / nxdomain 域名不存在majority.values(array):该答案的记录值(已规范化并排序);empty / nxdomain 时为空数组majority.sources(array):给出该答案的源 id 列表majority.count(number):给出该答案的源数量majority.tie(boolean):是否有其他答案与它票数相同(并列时取源顺序靠前的一组)groups(array):按答案分组(相同答案的源归为一组),按源数量从多到少排列;出错的源不计入groups[].status(string):该组答案的状态:ok / empty / nxdomaingroups[].values(array):该组的记录值(已规范化并排序)groups[].sources(array):该组包含的源 idgroups[].count(number):该组的源数量sources(array):每个 DoH 源的查询结果,顺序固定sources[].id(string):源 id:google / cloudflare / alidns / dnspod / quad9 / adguard / nextdnssources[].name(string):源名称sources[].location(string):服务节点分布(Anycast 表示按访问者就近接入,本服务器所在地区决定实际节点)sources[].endpoint(string):查询的 DoH JSON 接口地址sources[].verified(boolean):该接口是否已确认支持 DoH JSON 格式;false 表示未经确认,若不支持会显示为 errorsources[].status(string):查询状态:ok 有记录 / empty 域名存在但没有该类型记录 / nxdomain 域名不存在 / error 查询失败sources[].rcode(number|null):DNS 响应码:0 NOERROR、2 SERVFAIL、3 NXDOMAIN、5 REFUSED 等;请求失败未得到 DNS 答复时为 nullsources[].records(array):与查询类型一致的记录(CNAME 链中的中间记录不含在内),按值排序、去重sources[].records[].value(string):记录值(规范化后):A / AAAA 为 IP;CNAME / NS 为小写且去掉末尾点的域名;MX 为"优先级 邮件服务器";TXT 已去掉引号并拼接分段sources[].records[].ttl(number|null):该源返回的剩余 TTL(秒):递归服务器缓存的剩余时间,各源不同属正常;未返回时为 nullsources[].ms(number):该源查询耗时(毫秒,含 HTTPS 连接)sources[].error(string|null):失败原因的中文说明(如"查询超时(5 秒)""HTTP 400""DNS 返回 SERVFAIL");成功时为 null