HTTPDNS接口文档
最近更新时间:2017-10-19 16:43:13
1.了解帝恩思的HTTPDNS
httpDNS是基于http协议向帝恩思的DNS服务器发送域名解析请求,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。
虚线框是普通DNS工作方式:DNS.COM根据Local DNS的IP地址解析到www.dns.com 的A记录地址。
HTTPDNS执行(红线):用户通过HTTP协议访问帝恩思 HTTPDNS,然后转换成DNS协议(+client=用户IP地址)访问帝恩思,帝恩思会根据用户的IP地址查找域名的A记录地址返回。
重要提示:
1. HTTPDNS解析只支持A记录。
2. 服务接入使用IP地址需要加端口:5353,详情请查看2.1访问方式
3. HTTPDNS key解析方式接入,请参见:解析接口加密验证机制
2.API访问说明
2.1访问方式
HTTPDNS通过HTTP接口对外提供域名解析服务,服务接入直接使用IP地址,这里以14.152.80.144这个服务IP为例,说明HTTPDNS服务的访问方式。
请求方式:HTTP GET
HTTP服务URL:http://14.152.80.144:5353/d
URL参数说明:
名称 | 是否必须 | 描述 |
h | 必须 | 要解析域名 |
c | 可选 | 用户来源的IP,如果没有指定这个参数,默认使用请求连接的源IP |
访问HTTPDNS服务时,一次只能请求一个域名。
请求示例:
l 示例1(默认来源):http://14.152.80.144:5353/d?h=www.dns.com
l 示例1(自定义IP来源):http:// 14.152.80.144:5353/d?h=www.dns.com &c=192.168.1.1
2.2服务IP
HTTPDNS提供多个服务IP,上述文档中使用14.152.80.144为服务IP。
考虑到服务IP防攻击之类的安全风险,为保障服务可用性,HTTPDNS同时提供多个服务IP,当某个服务IP在异常情况下不可用时,可以使用其它服务IP进行重试。
如果使用特殊场景无法直接访问HTTPDNS API接口,请提工单或在线客服联系我们,我们将根据您的具体使用场景,为您提供更多的API服务。
3.API响应说明
请求成功
请求成功时,HTTP响应状态为200,响应结果用JSON表示,示例如下:
1. {
2. "host": "www.dns.com",
3. "data": [
4. "1.1.1.1"
5. ],
6. }
返回字段说明:
名称 | 描述 |
host | 请求解析的域名 |
data | 该域名的解析结果,是一个列表,可能包含0个,1个或多个IP地址 |
注意,请求成功时,返回结果中的data字段可能是空列表,即没有获得该域名的IP地址,主要原因:
1、 该域名没有购买相应的dns防御服务,请前往购买。
2、 该域名不存在对应IP,域名未注册,或没有配置IP地址。
data字段为空的返回结果示例:
1. {
2. "host": "www.dns.com",
3. "data": [],
4. }
请求失败时,HTTP响应的状态码为1、2、3,同时也返回具体的错误码,响应结果用JSON格式表示。
请求失败的响应示例:
1. {
2. "code": "1"
3. }
错误码列表如下:
HTTP状态码 | 描述 |
1 | 格式错误,timestamp错误 或者 sign 32位 或者 host错误 |
2 | 超时 timestamp超时 |
3 | 签名错误 |
4.错误处理说明
用户业务使用HTTPDNS时,应做好异常情况下的出错兼容逻辑,主要包括异步请求、重试和降级。
异步请求
访问HTTPDNS服务时,应该使用异步请求的策略,避免解析延迟太大而对业务造成影响,特别是在网络环境异常或HTTPDNS服务IP异常不可用时,如果用同步访问,需要等待网络超时后才会返回解析失败,这个超时时间较大,可能对业务的使用体验造成很大影响。
异步请求策略:解析域名时,如果当前缓存中有TTL未过期的IP,可直接使用;如果没有,则立刻让此次请求降级走原生LocalDNS解析,同时另起线程异步地发起HTTPDNS请求进行解析,更新缓存,这样后续解析域名时就能命中缓存。
重试
访问HTTPDNS服务解析域名时,如果请求HTTPDNS服务端失败,即HTTP请求没有返回,可以进行重试。
大部分情况下,这种访问失败是由于网络原因引起的,重试可以解决。
降级
不管是因为什么原因,当通过HTTPDNS服务无法获得域名对应的IP时,都必须降级:使用标准的DNS解析,通过Local DNS去解析域名。
如上所述,请求HTTPDNS但没有返回IP时,主要是因为“域名没有在控制台添加”或“域名本身不存在”,无论如何,如果通过HTTPDNS没有解析出IP,为保证业务请求正常,必须“降级”使用标准的DNS,作为一种兜底的方案。