概述
移动解析 HTTPDNS 通过 HTTP/HTTPS 接口对外提供域名解析服务,服务接入直接使用 IP 地址,移动解析 HTTPDNS 的 HTTPS 请求方式查询入口以
119.29.29.99
为例。说明:
我们提供2个入口 IP 示例,HTTP 协议的服务 IP:
119.29.29.98
,HTTPS 协议的服务 IP:119.29.29.99
。移动解析 HTTPDNS 接入的是 BGP Anycast 网络架构,对外提供的是Anycast IP。Anycast IP 是允许多个服务器共享同一个 IP 地址,具有高可用、负载均衡、减少网络延迟等优势。
前期准备
开通移动解析 HTTPDNS 服务,详情请参见 开通移动解析 HTTPDNS 服务。
在控制台添加需要解析的域名,详情请参见 添加域名。
获取配置信息,详情请参见 配置信息说明。
接口描述
接口请求地址:
https://119.29.29.99/d? + {请求参数}
。请求方式:POST 或 GET。
入口 IP 的切换逻辑:当接入 IP 访问超时,或者返回的结果非 IP 格式,或者返回为空的时候,请采用其他入口 IP 接入,若所有 IP 均出现异常,请兜底至 LocalDNS 进行域名解析。
请求参数
参数名 | 参数含义 | 是否必选 | 取值 | 加密 | 说明 |
dn | 被查询的域名 | 是 | 字符串 | 否 | |
token | 使用 HTTPS 方式的标识 | 是 | 整型数据 | 否 | |
ip | DNS 请求的 ECS(EDNS-Client-Subnet)值 | 否 | IPv4/IPv6 地址值 | 否 | 默认情况下 HTTPDNS 服务器会查询客户端出口 IP 为 DNS 线路查询 IP,使用 “ip=xxx” 参数,可以指定线路 IP 地址。支持 IPv4/IPv6 地址传入,接口会自动识别。 |
query | 结果中返回被查询域名 | 否 | 1 | 否 | 单域名查询情况下,此参数要求返回结果中携带被查询域名。 |
timeout | 超时返回时间 | 否 | 1000 - 5000,单位为毫秒 | 否 | 可用值[1000, 5000],单位为ms,查询超时时间,默认值为5秒。 |
ttl | 查询结果是否返回 TTL 值 | 否 | 1 | 否 | 可用值 [1],不携带此参数,默认为不传递TTL值。 |
type | 查询类型 | 否 | [aaaa/AAAA/addrs/ADDRS] | 否 | 可用值[aaaa,AAAA,addrs,ADDRS]。默认查询 A 记录,设置 AAAA/aaaa 查询 AAAA 记录,设置 addrs/ADDRS 同时查询 A 和 AAAA 记录。 |
clientip | 查询结果中返回的客户端 IP 地址 | 否 | 1 | 否 | 可用值 [1],不携带此参数,默认为不传递 clientip 值。若此参数取值,则返回结果中地址值在 | 符号后,若携带有 ip 参数,返回的是 ip 参数的值,否则返回客户端地址 IP。 |
说明:
ECS(EDNS-Client-Subnet)协议在 DNS 请求包中附加请求域名解析的用户 IP 地址,DNS 服务器可以根据该地址返回用户更快速访问的服务器 IP 地址。
使用 HTTPS 方式,传输的数据会因为 TLS 通道而被加密保护,因此不需要主动对传入的数据额外加密。
出于安全和身份认证的考虑,需要传入 HTTPS Token 实现身份鉴权。
请求说明
以请求域名为
cloud.tencent.com
,token 为 yyyy
为例。请求 A 记录
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy"
解密后返回格式:
2.3.3.4;2.3.3.5;2.3.3.6
格式说明:返回查询结果,多个结果以 ';' 分隔。
返回结果中携带 ttl 信息
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&ttl=1"
解密后返回格式:
2.3.3.4;2.3.3.5;2.3.3.6,120
格式说明:返回查询结果,多个结果以 ';' 分隔。记录值与 ttl 值以 ',' 分隔。
返回结果携带查询线路 IP 地址
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&clientip=1&ip=1.2.3.4&ttl=1"
解密后返回格式:
12.3.3.4;2.3.3.5;2.3.3.6,120|1.2.3.4
格式说明:返回结果中携带线路 IP 地址,以'|'分隔。如果没有传入 “ip=xxx” 参数,则返回出口 IP 地址;否则返回 ip 参数中的地址。
同时请求 A 和 AAAA 记录
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&clientip=1&ip=1.2.3.4&type=addrs&ttl=1"
解密后返回格式:
2.3.3.4;2.3.3.5;2.3.3.6,120-2402:4e00:0123:4567:0::2345;2403:4e00:0123:4567:0::2346,120|1.2.3.4
格式说明:A 记录和 AAAA 记录之间以 '-' 分隔,A 记录在前,AAAA 记录在后。
返回结果中携带被查询域名
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&clientip=1&ip=1.2.3.4&query=1&ttl=1"
解密后返回格式:
cloud.tencent.com.:2.3.3.4;2.3.3.5;2.3.3.6,120|1.2.3.4
格式说明:返回格式为 “域名.:结果” 的格式。
批量域名请求
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com,www.qq.com,www.dnspod.cn&token=yyyy&clientip=1&ip=1.2.3.4&ttl=1"
解密后返回格式:
cloud.tencent.com.:2.3.3.4;2.3.3.5;2.3.3.6,120www.qq.com.:3.3.3.4;3.3.3.5;3.3.3.6,180www.dnspod.cn.:4.3.3.4;4.3.3.5;4.3.3.6,60|1.2.3.4
格式说明:多个域名返回内容之间以 “换行符” 分隔,IP 地址附加在所有记录值的最后。
请求异常或无记录说明
查询 A 记录
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&id=xxx"
解密后返回格式: 空。
格式说明: 没有记录,则返回空字符串。
返回结果中包含域名
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&type=addrs&query=1&ip=1.2.3.4"
解密后返回格式:
cloud.tencent.com|1.2.3.4
格式说明:0表示没有记录。
返回 A 与 AAAA 的记录
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com&token=yyyy&type=addrs&query=1&ip=1.2.3.4"
解密后返回格式:
cloud.tencent.com.:0-0|1.2.3.4
格式说明:0表示没有记录。如果某个记录存在,则该记录正常返回在结果中,例如
cloud.tencent.com.:2.3.4.5;3.3.3.3-0|1.2.3.4
,表示 AAAA 记录无法查询到。批量域名请求
输入示例:
curl "https://119.29.29.99/d?dn=cloud.tencent.com,www.qq.com,www.dnspod.cn&token=yyyy&clientip=1&ip=1.2.3.4&ttl=1"
解密后返回格式:
cloud.tencent.com.:0www.qq.com.:3.3.3.4;3.3.3.5;3.3.3.6,180www.dnspod.cn.:4.3.3.4;4.3.3.5;4.3.3.6,60|1.2.3.4
格式说明:未查询到数据的域名则返回0。如果某个记录存在,则该记录正常返回在结果中。
HTTP 状态码
以下为接口业务逻辑相关的 HTTP 状态码。
状态码 | 描述 |
200 OK | 如果接口调用正确,无论是否查询成功,均返回状态码200。 |
404 Not Found | 接口不存在或 URL 实际上访问了某不存在的资源。 |
429 Too Many Request | 访问过于频繁,超过了服务器限制。 |
501 Not Implemented | 使用了非 “GET” 或 “POST” 请求方式。 |