帮助中心

HTTPDNS接口文档

时间 : 2017-10-19编辑 : DNS智能解析专家
分享 : 

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服务时,一次只能请求一个域名。

请求示例:

示例1(默认来源):http://14.152.80.144:5353/d?h=www.dns.com

示例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,作为一种兜底的方案。