为了不被广告打扰,不少用户都会在浏览器中安装广告拦截扩展,如今也有不少浏览器直接内置了这个功能。这些广告拦截工具都是由不同的 "过滤列表" 驱动,这些规则列表可以告诉广告拦截工具应该如何准确地拦截广告。这之中,EasyList 则是最知名、使用最广泛的一个过滤规则,它是一个由社区管理和维护的项目。
AdBlock Plus、uBlock Origin、AdGuard 等广告拦截工具都有在使用 EasyList,甚至是默认就勾选了它。除此之外,还有很多过滤规则是基于 EasyList 演变而来的,基本上等同于只要你在使用广告拦截工具,你就绕不开 EasyList。
几周前,EasyList 的维护者看到了项目的流量出现的几大幅度的增长。整体的流量迅速从每天几 TB滚雪球般增长了 10-20 倍。结果发现,这一激增的来源是来自印度的 Android 设备。在调查了这个问题之后,发现具有广告屏蔽功能的应用程序在滥用 EasyList 的服务器。
- 有(多个)开源的 Android 浏览器,实现了广告拦截功能
- 浏览器是由其他几个在印度非常流行的浏览器分叉而来
- 浏览器有一个非常严重的缺陷,它在每次启动时都会试图下载过滤器的更新,在 Android 系统上,它可能每天都会发生很多次,它甚至可以在浏览器在后台运行时下载更新。
EasyList 本质上就是一个文本文件,可通过以下地址获得:https://easylist.to/easylist/easylist.txt。尽管文件并不大,但是如果你现在尝试下载这个文件,你会发现需要很长的时间才能下载完成。
EasyList 被托管在 Github 上,并通过 CloudFlare 进行代理。不幸的是,CloudFlare 不允许非企业用户使用这么多的流量,现在所有对 EasyList 文件的请求都被扼杀。
虽然 EasyList 尝试了联系 CloudFlare 以获得支持,但后者表示他们无法帮助。为 EasyList 提供服务实际上可能违反了 CloudFlare 的 ToS。
我们看到有很多访问 https://easylist.to/easylist/easylist.txt 的请求,这触发了自动 DDos 缓解。根据在 Cloudflare 被请求的 URL,它也违反了我们的 ToS。所有的请求都是 txt 文件扩展名,这不是一个网络内容。为了使你的用户能够使用 https://easylist.to/easylist/easylist.txt,你需要将这个 txt 文件移到另一个子域,并禁用代理。换句话说,你不能使用 Cloudfiare 来缓存或代理对这些文本文件的请求。
对普通用户而言,此次事件对你是否有影响取决于用户使用的广告拦截工具具体是什么,因为有些广告拦截工具是将过滤列表托管在自己的服务器中,不直接从 EasyList 下载更新。而另一部分广告拦截工具则可能需要切换到镜像域。
目前还不清楚 EasyList 到底会怎么做,但做出的任何改变都将会影响许多其他依赖 EasyList 的开源项目。