劫持模拟验证

在完成Android SDK接入后,您可以通过模拟 Local DNS 异常的方式,验证 HTTPDNS 是否已成功生效。本文将提供具体的测试方法与步骤。

验证原理

HTTPDNS 通过 HTTP 或 HTTPS 协议直接向阿里云 DNS 服务器发起解析请求,绕过系统 Local DNS,避免因网络环境导致的劫持或解析失败。
在移动设备上,Local DNS 通常由当前网络提供:Wi‑Fi 连接时使用路由器或运营商配置的 DNS,移动数据则使用运营商的 DNS。以 Wi-Fi 环境为例,修改 Wi‑Fi DNS 相当于直接改变 Local DNS 的工作状态,将 Wi‑Fi DNS 设置为无效地址,可制造 Local DNS 解析失败的环境。在劫持模拟的环境下发起网络请求时:

  • 请求成功:已绕过 Local DNS,HTTPDNS 接入成功

  • 请求失败:依赖 Local DNS,HTTPDNS 接入失败

测试准备

  • 测试设备:安卓手机,支持手动修改 Wi‑Fi DNS

  • 网络环境:可连接 Wi‑Fi,并可手动修改其 DNS 地址

  • App 状态:已集成 EMAS HTTPDNS SDK

  • 测试域名:已在阿里云 HTTPDNS 控制台配置并使用的业务域名

测试步骤

步骤 1:正常网络验证

  1. 将测试设备连接至任意可用 Wi‑Fi 网络,保持默认 DNS 设置。

    image

  2. 在关闭 HTTPDNS 的情况下,打开 App,触发任意一个通过域名访问的网络请求(如首页加载、接口调用)。

  3. 确认请求返回正常。

说明

此步骤用于建立对比基准,确保 App 和服务在正常网络环境下工作正常

步骤 2:模拟 Local DNS 解析异常

  1. 打开测试设备的 Wi‑Fi 设置,长按当前已连接的 Wi‑Fi,选择“修改网络”或“高级选项”。

  2. 将 IP 设置更改为“静态”。

  3. 在 DNS 1 和 DNS 2 字段输入无效的 IP 地址,例如 1.2.3.4 或 100.100.100.100,确保 Local DNS 无法解析域名。

    说明

    注意:避免使用 114.114.114.114、8.8.8.8 等有效公共 DNS

    image

  4. 保存配置并重新连接该 Wi‑Fi 网络。

步骤 3:在“劫持”环境下进行验证

  1. 确认设备已连接步骤 2 中修改过的 Wi‑Fi(DNS 为无效地址)。

  2. 关闭移动数据连接,避免 Wi‑Fi 不可用时系统自动切换到移动网络。

  3. 开启 HTTPDNS,打开 App,触发与步骤 1 相同的业务请求(例如首页加载或接口调用)。

  4. 观察请求结果:

    请求结果

    结论

    示例

    网络请求成功

    已绕过 Local DNS,域名解析由 HTTPDNS 完成,说明HTTPDNS 接入成功

    image

    网络请求失败

    • 首次请求失败,可能存在缓存缺失降级到 Local DNS 的情况,稍等后重试

    • 若多次请求仍失败,说明仍依赖 Local DNS,解析在“劫持”环境下失败,HTTPDNS 接入失败

    image

    说明

    在使用同步非阻塞接口进行域名解析时,建议开启预解析setPreResolveHosts和允许过期接口setEnableExpiredIp,以确保本地缓存中有可用解析结果,避免因缓存缺失而回退到 Local DNS,从而影响验证准确性。