AdAway 中文文档 下载 App

某 APP 打不开 / 闪退 —— 用 DNS 日志找出被误杀的必需域名

症状

开 AdAway 时某 APP 打不开、闪退、加载不出数据、登录失败。关 AdAway 后一切正常。

核心原因

hosts 源误拦了这个 APP 必需的域名。

AdAway 的作者 Bruce BUJON 在 GitHub Wiki Solutions 页面里原话:

AdAway doesn't cause any app to crash. What really matters is which URLs are redirected via that hosts file. Those URLs come from either the hosts sources or from any whitelist or blacklist you may have created.

AdAway 本身不会让 APP 崩溃——是 hosts 文件里的条目把某个域名重定向到了 127.0.0.1,而那个域名恰好是 APP 的必需依赖。

排查步骤

第一步:确认是 AdAway 的问题

关掉 AdAway → 打开那个 APP → 能正常运行。再开 AdAway → 又崩了。确认是 hosts 拦截导致的。

第二步:查 ProblematicApps 页面(最快路径)

AdAway GitHub Wiki 有一个维护了多年的 ProblematicApps 页面,列出了几十个 APP 的已知误杀域名和对应解决方案。常见的:

APP需放行的域名
Facebookedge.mqtt.facebook.com, graph.facebook.com
Amazon Shopping*.amazon-adsystem.com, aan.amazon.com
9Gag*.cloudfront.net
CamScannerd117.intsig.net, *intsig*
Fitbitwww.google-analytics.com
NordVPNlaunches.appsflyer.com
Twittert.co
Wikipedia(某些版本)不拦也可能正常,某些 hosts 源误拦了 Wikimedia 的 CDN

你可以对照这个列表快速加 Allowlist。但不要全信——你的 APP 版本、你的 hosts 源、你所在地区的网络都可能导致你遇到 wiki 里没提到的域名。

第三步:用 DNS 日志定位(最准路径)

Wiki 里没有 → 跑 DNS 日志。完整流程见 DNS 日志完整流程。简化版:

  1. 临时关掉 AdAway(让 APP 能正常运行,同时 DNS 日志能看到所有请求)
  2. 打开 AdAway → 主菜单 → Log DNS Requests → 启动
  3. 打开目标 APP,正常操作 1~3 分钟(触发它的各种网络请求)
  4. 回到 AdAway → 打开日志文件
  5. 找那些 APP 正常运行时访问的域名(这些就是它必需的)
  6. 重新开 AdAway → 重跑 APP → 再看 DNS 日志里哪些域名被 Block 了
  7. 被 Block 且 APP 必需的 → 长按 → 加进 Allowlist

第四步:验证

加完 Allowlist → 重新应用 hosts → 重开 APP → 应该正常了。

注意事项

通配符比单个域名方便

如果 DNS 日志里看到这个 APP 访问的必需域名有好几个:

api1.example.com
api2.example.com
auth.example.com

长按其中一个 → 加进 Allowlist → 然后编辑改成 *.example.com。一个通配符放行整个子域名族。

不要放行太宽

*.facebook.com 会把 Facebook 广告也放了。精确放行 graph.facebook.com 和 edge.mqtt.facebook.com 就行——这两个是 Facebook APP 必需的,广告用的是 ads.facebook.com 和 doubleclick.net,不会被放行。

每个 Allowlist 条目写注释

AdAway 支持在主机名后面加注释。格式:graph.facebook.com # Facebook 必需,hosts 源误拦。半年后你看到这条 Allowlist 条目还知道是为什么加的。

应用后不要忘记重新应用 hosts

加完 Allowlist/Blocklist/Redirect 后必须重新应用 hosts——否则新规则不会生效。主界面的应用按钮点一下。

APP 还崩 → 可能有其他原因

如果 DNS 日志里被 Block 的域名都加了 Allowlist 但 APP 还是崩:

预防下次

你可以把这个 APP 的 Allowlist 规则导出(主菜单 → Allowlist → 导出),存到云盘。下次换设备或刷 ROM 后直接导入,不用再排查。

也可以把规则提交到 AdAway GitHub Wiki 的 ProblematicApps 页面——帮更多人少走弯路。

小结

APP 打不开 = 找 DNS 日志 = 加 Allowlist = 完事。

这一步不要换源、不要删 hosts、不要重装 AdAway——问题精准定位在"这个 APP 依赖 X 域名,某个 hosts 源误拦了 X"。