为什么 AdAway 坚持开源 —— GPLv3 协议背后的意义
AdAway 的许可证
AdAway 在 F-Droid 页面和 GitHub README 里都明确标注:GNU General Public License v3.0 or later,简称 GPLv3+。这意味着:
- 源码完全公开,任何人可以阅读、修改、分发
- 修改后再分发也必须保持 GPLv3 协议,不能变成闭源
- 不能把 AdAway 的代码拿去做闭源的广告拦截 APP 卖钱
- 作者 Bruce BUJON(XDA 上名 iMiKED)不持有任何商业授权
为什么这很重要:反例就是对比
市面上有不少广告拦截 APP 是闭源的。闭源 APP 可以藏什么?
- 偷偷收集你的浏览记录,打包卖给广告商——"反广告"APP 自己在卖广告数据,这种事在 Android 生态里真的发生过
- 内置远程开关,服务器一条指令就能让拦截失效——比如被广告公司投诉后,APP 默默放过某些域名
- 植入追踪 SDK——Facebook SDK、Google Analytics 这些本身就是追踪器,而广告拦截 APP 自己却偷偷嵌着
- 权限滥用——申请了"查询所有已安装软件包"权限,本意是给你按 APP 过滤,但闭源后你无法确认它有没有把 APP 列表发回服务器
AdGuard 就是一个典型对比案例:基础版免费但功能有限,高级版订阅制才解锁完整功能。它的 APP 里有统计模块,虽然声称不收集隐私数据,但闭源意味着用户无法独立审计这个声明。
AdAway 的隐私承诺
从 AdAway 的权限列表(F-Droid 构建日志公开)来看,它只申请了:
- 网络访问(下载 hosts 源)
- VPN 服务(非 root 模式)
- 开机自启(定时更新 hosts)
- 前台服务(Android 8+ 后台限制下保持运行)
没有位置权限、没有联系人权限、没有通讯录权限、没有相机。查询所有已安装软件包的权限是为了在 DNS 日志里识别"哪个 APP 发起了这个请求",这个数据完全在本地处理,不联网发送。
开源能给你的保障
- 可以自己审计:如果你会读代码,可以去 GitHub 上翻
app/src/main/java/org/adaway/下的网络请求部分,确认它除了下载 hosts 源之外还连了哪些服务器 - 任何人都可以审计:实际上 F-Droid 的打包流程、独立安全研究人员、社区用户都在做这件事,闭源 APP 只能靠厂商自证清白
- 可以自己编译:F-Droid 提供了可重复构建(Reproducible Build)的元数据,你可以用同样的源码在自己机器上编译,对比编译产物是否一致——如果 F-Droid 分发的 APK 和你编译的不一样,说明有问题
- 可以自己改:不喜欢作者某个功能?你可以 fork 仓库删掉再自己编译安装,只要你也遵守 GPLv3
局限性
开源也不是万能的:
- AdAway 的 hosts 源是第三方维护的,某个源被污染了(恶意加了广告白名单),AdAway 本身没能力检查
- 开源不代表好用,AdAway 的界面设计比较朴素,不像 AdGuard 那样有漂亮的仪表盘
- 开源不代表万能,遇到 IP 直连、自建 DNS 的 APP,谁都拦不住
但这些都是"功能边界"问题,不是"信任边界"问题。在广告拦截这个场景里,信任边界——也就是这个 APP 本身不收集你数据——是最底线的要求。
链接
- 许可证全文:GNU General Public License v3.0
- 源码仓库:GitHub AdAway/AdAway
- F-Droid 可重复性构建验证:verification.f-droid.org/packages/org.adaway/
