Facebook持续改变页面结构绕过过滤规则,uBlock Origin停止主动维护其广告拦截,未来只能依靠志愿者提交修复。

Facebook广告长期让用户不满。平台持续追踪用户行为,用这些数据投放定向广告,广告质量和可信度又经常受到质疑。更棘手的是,它们很难被长期屏蔽。广告拦截工具刚找到稳定规则,Facebook就改变实现方式,让规则失效,双方已经反复攻防多年。
uBlock Origin开发团队如今决定停止主动过滤Facebook广告。团队成员在Reddit解释,平台不断绕过现有过滤器,维护者不愿再追着每次变化修补规则。一名开发者直言,Facebook是“令人厌恶的反用户网站”,它能公开观察开源项目如何编写过滤规则,再针对这些规则调整页面,把有害广告送到用户面前。
开源在这里形成了不对称局面。过滤器的规则、问题讨论和修复过程全部公开,Facebook可以直接看到拦截逻辑;平台内部如何生成广告标记却由公司控制。只要DOM结构、文字排列或标识方式稍作变化,依赖模式匹配的规则就可能失效。维护者不仅要找出新方法,还得在下一次改动后重新开始。
“Sponsored”标记展示了这种对抗能细到什么程度。有用户尝试用uBlock Origin的元素选择器屏蔽这个词,却发现Facebook把单词拆成单个字母,每个字母包在独立代码中。开发团队确认,这种做法约已使用5年。平台有时还会打乱字母顺序,插入不会真正显示的假字符,使过滤器难以从源码中识别完整单词。人眼仍能看到“Sponsored”,规则读取到的却可能是一串混乱节点。
一名团队成员把停止维护的原因说得很直接:他们不会再支持Facebook,因为这是一个“令人厌恶的反用户网站”。开源项目的一切工作都公开进行,Facebook开发人员可以观察过滤器怎样识别广告,再编写对策继续投放广告。维护者认为,自己面对的是一家能给开发人员开出7位数美元薪资的大公司,这场反复追赶已经不值得继续。
停止支持不等于彻底封死。开发团队表示,任何仍愿意对抗Facebook广告投放的人,都可以修复过滤规则,并以pull request提交给项目。只要有人愿意持续投入,相关改动仍可能被纳入,但团队不再主动承担这项长期维护工作。
uBlock Origin同时面临浏览器平台的限制。Google Chrome从Manifest V2转向Manifest V3后,原版扩展已无法正常使用;Microsoft也确认了淘汰uBlock Origin及类似扩展的时间安排。即使社区仍支持项目,浏览器扩展平台本身的变化也会决定用户能否继续安装和运行它。
Firefox和Brave目前仍支持uBlock Origin,因此工具并未消失。Facebook事件呈现的是另一层难题:浏览器允许广告拦截器运行之后,维护者仍要持续跟踪网页结构变化。平台每改变一次文字和代码排列,公开过滤规则就可能再次失效,志愿者只能重新寻找识别办法。
原文:https://www.neowin.net/news/facebook-ads-are-so-hard-to-block-that-ublock-origin-stopped-filtering-them/