AdAway 中文文档 下载 App

AdAway 的合并去重策略 —— 多源重叠时到底听谁的

这是新手最容易忽略的环节

很多用户加了 5~6 个 hosts 源,以为覆盖范围最大,但实际上:

多个源合并后,条目数不是简单相加。

不同的 hosts 源会互相重叠、互相矛盾。搞不懂合并规则,你可能遇到:

AdAway 的合并逻辑(从源码和文档确认)

步骤一:解析所有启用的源

每个 hosts 源下载后,AdAway 逐行解析:

步骤二:按主机名分桶

所有规则按主机名聚类:

example.com → [block 规则, redirect 规则]
tracker.io  → [block 规则, block 规则]

步骤三:按优先级决定每个主机名的最终处理方式

优先级(从高到低):

  1. 重定向规则(redirect)> 拦截规则(block)
  1. 自定义规则(Allowlist / Blocklist / Redirection List)> hosts 源规则
  1. 同一主机名多个 block 规则 → 去重,只留一条
  2. 同一主机名多个 redirect 规则 → 去重,只留一条

步骤四:加上 AdAway 自己的 localhost

AdAway 会先加 127.0.0.1 localhost 和 ::1 localhost,然后把合并好的其他规则追加在后面。

步骤五:生成最终 hosts 文件

写入 /system/etc/hosts(root 模式)或注册到 VPN(VPN 模式)。文件开头的注释会列出所有启用的 hosts 源名称。

具体冲突场景示例

场景 1:同一域名在两个源里都有

源 A(Steven Black):  127.0.0.1 tracker.example.com
源 B(Energized):     0.0.0.0 tracker.example.com

合并结果:一条拦截规则 127.0.0.1 tracker.example.com(IP 取第一个遇到的,去重后只留一条)。效果无差别。

场景 2:同一域名一个拦截一个重定向

源 A:  127.0.0.1 google.com
源 B(中国重定向列表):  111.222.1.1 google.com

合并结果:重定向规则 111.222.1.1 google.com。redirect 优先级高于 block。

这就是为什么某些 hosts 源提供"中国重定向列表"——Google、Facebook 这些在国内被墙,但 hosts 源里可能还在拦它们,用重定向列表可以把拦截规则替换成正确的国内 IP。

场景 3:同一域名被 Allowlist(允许列表)放行

源 A:     127.0.0.1 ads.example.com
你自己的 Allowlist:  ads.example.com

合并结果:放行。你的 Allowlist 永远覆盖任何 hosts 源的拦截。

场景 4:同一域名被 Blacklist(黑名单)强制拦截

源 A:     (没有这个域名)
源 B:     (没有这个域名)
你自己的 Blacklist:  127.0.0.1 ads.example.com

合并结果:拦截。自己加的 Blacklist 永远生效,即使没有任何 hosts 源包含它。

冲突总结表

规则类型 A规则类型 B合并结果
Block(源)Block(另一个源)保留一条 Block
Block(源)Redirect(源)Redirect 优先
Block(源)Allow(自定义)Allow 优先
Block(源)Block(自定义 Blacklist)Block(相同)
Redirect(源)Redirect(自定义)保留一条 Redirect
Allow(自定义)Redirect(自定义)Allow 优先

实战建议

  1. 控制源数量:2~3 个高质量源比 6 个混乱源好——减少冲突、减少过时条目
  2. 自定义规则覆盖一切:遇到误杀用 Allowlist 放行,遇到漏拦用 Blacklist 补——这是比"换源"更精准的方式
  3. 重定向规则慎用:重定向会把请求发到指定 IP,如果那个 IP 失效了,APP 会连不上而不是直接空掉,行为可能更怪
  4. 查看生成的 hosts:主菜单里可以看最终产物,一眼能确认哪些源被合并进来了
AdAway Hosts Sources
Hosts 源管理界面,启用状态和条目数一目了然