App 连接服务器之前,通常要先通过 DNS 查询地址。所以看 DNS 查询记录,能很快知道一个 App 联系了哪些服务,包括统计和广告域名;也能找出返回 NXDOMAIN 或响应很慢的解析。iOS 本身没有 DNS 日志。HTTPS Capture 可以在 iPhone 上记录 DNS 查询,和 HTTP 请求放在一起看。
开启 DNS 抓包
- 打开 HTTPS Capture 的 设置。
- 在 抓包 分组里打开 DNS 抓包。
- 可选:点 DNS 服务器 选择用哪些 DNS 服务器解析。
- 重新开始抓包(先停止再开始),新设置才会生效。
开启后,iPhone 的 DNS 查询会经过 HTTPS Capture 的隧道发往你选的服务器,每一条查询和应答都会被记录下来。
查看 DNS 记录
DNS 查询和 HTTP 请求显示在同一条时间线里,带绿色的 DNS 标记。每一行显示:
- 域名和记录类型,比如
A、AAAA、HTTPS - 结果:NOERROR、NXDOMAIN(域名不存在)、SERVFAIL 或 TIMEOUT
- 返回应答的 DNS 服务器
点开可以看到完整信息:查询内容、标志位、响应耗时、每条应答及其 TTL、EDNS 信息,以及原始报文的十六进制。点某条应答可以复制,也可以用 Copy Query Name / Copy Summary。
用搜索框可以找某个域名;用 规则 → URL 筛选器 的白名单或黑名单,可以控制哪些域名需要记录。
选择 DNS 服务器
在 DNS 服务器 里可以选预设:Google(8.8.8.8)、Cloudflare(1.1.1.1)、阿里 DNS、DNSPod、114 DNS、百度,也可以手动填写最多 3 个 IPv4 地址。对比不同服务商的解析耗时,可以快速看出在你的网络下哪个 DNS 最快。
抓不到的情况
DNS 抓包记录的是 UDP 53 端口上传统的明文 DNS。以下查询 看不到:
- 通过 DNS 描述文件配置的加密 DNS,它的优先级可能更高
- iCloud 专用代理 的查询
- App 自己用 DNS-over-HTTPS 解析的情况。这类请求通常仍会以 HTTPS 请求的形式出现在 HTTP 列表里。
- 局域网设备的组播查询(mDNS / Bonjour)
隐私
和 HTTPS Capture 的其他数据一样,DNS 记录只保存在你的 iPhone 上。导出 HAR 文件 时不会包含 DNS 记录,因为 HAR 只描述 HTTP 流量。
准备好试试了吗?
HTTPS Capture · Capture and decrypt HTTPS traffic on iPhone
App Store 免费下载