接入指南

1. 前言

客户端接入概述,您已了解到HTTPDNS 通过 HTTP 协议提供域名解析服务,有效解决 DNS 劫持、提升解析精度和稳定性。我们优先推荐使用官方 SDK 接入,但在功能深度定制、特殊网络环境适配等特定场景下,您可能无法直接使用 SDK,此时需要通过 HTTP API 方式自行实现域名解析。通过 HTTP API 接入 HTTPDNS 包括以下步骤:

  1. 开通HTTPDNS服务

  2. 添加待解析域名

  3. 获取开发配置(包括Account ID、密钥等)

  4. 获取启动接入点

  5. 调用调度接口

  6. 执行域名解析

  7. 解析服务IP列表动态更新

其中,前三步属于控制台操作,如果您还没有完成对应操作,可以参考产品使用流程,后四步属于HTTP API接入的流程,本文将介绍基于 HTTP API 实现高可用 DNS 的核心概念和流程。

2. 核心概念

  • 调度服务:智能路由服务组件,基于客户端来源 IP 地址进行地理位置和网络拓扑分析,返回最优的解析服务节点列表,实现负载均衡和就近接入。

  • 解析服务:域名解析执行引擎,提供标准的 DNS 查询功能,将域名转换为对应的 IP 地址,支持 A 记录、AAAA 记录解析类型。

  • 启动接入点:预配置的服务发现端点,包含 IP 地址和域名两种形式,用于建立与调度服务的初始连接,获取动态分配的解析服务节点列表。

  • 服务 IP:调度服务分配的解析服务器地址,经过智能调度算法选择的最优节点,用于执行实际的域名解析请求。

3. 接入步骤

HTTP API 的工作流程包含四个关键步骤,形成完整的高可用 DNS 解析链路:

image

  1. 获取启动接入点 - 在应用内置多个启动接入点(IP 地址和兜底域名),作为访问调度服务的入口

  2. 调用调度接口 - 通过启动接入点调用调度服务接口,获取就近、健康的服务 IP 列表用于后续解析

  3. 执行域名解析 - 使用获取到的服务 IP 调用域名解析接口,完成具体的域名到 IP 地址映射

  4. 动态更新机制 - 在特定条件下(App 启动、网络切换、定期更新、解析失败)自动更新服务 IP 列表,确保服务持续可用

    说明
    • 建议App冷启动时进行更新

    • 建议切换网络环境时进行更新

    • 建议每8小时至少更新一次

    • 当服务IP列表经过重试发现都无法解析时,立即更新

这套流程设计的核心优势在于通过多接入点 + 动态调度实现高可用 DNS 解析:

  • 多接入点保障:通过内置多个启动接入点保障服务可达性,避免单点故障影响整体服务

  • 动态调度优化:通过调度接口动态获取最优服务 IP,实现就近访问和故障转移

它既能够实现 HTTPDNS 服务本身防 DNS 劫持 (IP 直连,不依赖Local DNS),也能在部分服务 IP 被封禁、遭受高强度 DDoS 攻击、面临极端自然灾害等场景下保证服务的高可用。

说明

原有的域名解析接口单个域名解析批量域名解析实现鉴权访问已迁移到历史接口文件夹。

4. 最佳实践

基于 HTTP API 实现高性能、高可用的 HTTPDNS 客户端是一项具有相当技术挑战的工作。开发者需要处理多层次的复杂性:从启动接入点的冗余管理、调度服务的智能调用,到解析结果的本地缓存和故障转移机制,每个环节都需要精心设计和实现。为降低实现门槛和实现难度,您可以参考最佳实践建议

5. 网络库适配

通过HTTP API 获取到 DNS 解析结果后,还需要将这些 IP 地址正确应用到应用的网络库中,实现 HTTP/HTTPS 请求的 IP 直连。为了简化开发者的集成工作,HTTPDNS 已经对主流网络库进行了深度适配:

  • Android 平台:OkHttp、HttpClient、HttpURLConnection 等网络库的完整适配方案

  • iOS 平台:NSURLSession、AFNetworking、Alamofire 等网络库的集成指导

  • HarmonyOS 平台:系统原生网络 API 和主流第三方网络库的适配实现

这些适配方案不仅解决了 IP 直连的技术难题,还处理了 HTTPS SNI、证书校验、Host 头设置等关键技术细节,确保在复杂网络环境下的稳定性和安全性。

如需了解具体的网络库集成实现,请参考相应平台的详细文档:

说明

上述网络库适配方案展示的域名解析流程是采用 HTTPDNS SDK 完成的。若要应用到您的具体业务场景,请将 SDK 调用替换为基于 HTTP API 的域名解析实现。

6. 总结

本文介绍了基于 HTTP API 实现高可用 HTTPDNS 解析的核心架构和实现流程。为了进一步了解基于具体实现细节,建议参考以下相关文档:启动接入点调度服务接口域名解析接口最佳实践建议