打开一个用 Anubis 保护的网站,你会先卡在一行字上:Making sure you're not a bot。等几秒,页面才放你进去。这背后不是玄学,是一套让浏览器悄悄算一道数学题的机制——题目对人来说不痛不痒,对爬虫农场来说却是笔越滚越大的账单。

有意思的是,围绕这个工具流传的一个说法是它“花了一年时间才支持 WebAssembly”,听起来像一段值得讲的工程故事。但翻遍能找到的官方材料,这一年具体卡在哪、改了什么、性能提升多少,一个字都没有。这篇要讲的,不是那段缺失的故事,而是从这道验证题里能看清的两件事:它自己承认只是临时方案,以及它正在悄悄跟隐私工具打架。

为什么网站需要这道题

AI 公司这几年疯狂抓取网页训练模型,中小站点和自建代码托管服务(比如不少人自己搭的 Forgejo、Gitea 实例)扛不住这种规模的流量,动不动就被爆式抓取拖到宕机。Anubis 就是社区为了应对这个问题写出来的开源工具。

它的思路借用了上世纪九十年代对付垃圾邮件的老办法——Hashcash:让发信人先算一道计算题再发邮件,正常人发一封邮件感觉不到延迟,但群发垃圾邮件的成本会被计算量摊薄放大。Anubis 把同一套逻辑搬到了网页访问上。

验证成本:普通用户 vs 爬虫矩阵 单次真人访问 几乎无感 几秒等待,看不出差别 海量爬虫抓取 成本骤增 规模越大,计算账单越重

这套设计的聪明之处在于不需要判断“你是不是机器人”,只需要让规模化作恶变贵。对单个访客来说是噪音,对抓取矩阵来说是税。

那段“一年”的故事,其实找不到

标题里“迁移到 WebAssembly 用了一年”听着像个值得展开的工程复盘——遇到什么兼容性坑、性能测了多少、代码怎么重构。但目前公开能看到的材料,包括验证页面文案本身,只字未提这段过程。

这不是我不想讲,是材料本身就没有。如果真要还原这一年发生了什么,得去翻项目的提交记录和版本说明,或者等开发者自己写一篇复盘。现在能确定的只有结果:验证机制现在依赖现代 JavaScript 特性运行,用 Wasm 执行计算密集的哈希任务在技术上说得通,能提高单次验证的效率,但这层判断到此为止,再往下就是编。

官方自己都说了:这只是权宜之计

比“一年”传闻更值得记住的一句话,藏在验证页面最后一段:Anubis 把当前的工作量证明机制明确称为占位方案。真正的目标是转向浏览器指纹识别——比如通过字体渲染的细微差异分辨真人和无头浏览器,这样合法用户以后可能根本看不到这道验证题。

连开发者自己都没打算靠一道计算题赢到最后。

这句自我坦白很难得。多数产品文案会把过渡期方案包装成终极答案,Anubis 没有。这说明团队清楚:PoW 能拖慢成本,拖不住能力——高级爬虫照样可以模拟浏览器环境把这道题算过去,只是贵一点。

  • 风险.验证机制要求现代 JS/Wasm 环境,并明确提示用户关闭 JShelter 等隐私插件才能通过。这意味着注重隐私、用轻量浏览器的合法访客,反而更容易被挡在门外。

这个冲突原文里只是一句提示,但分量不小。反爬虫和反追踪,本来站在同一条战线上——都在对抗某种不受欢迎的自动化行为——现在却因为技术实现细节正面打了一架。用户要绕过验证,得先放弃一部分隐私防护,这笔账谁来算,官方没给答案。


Hashcash 提出的年代,垃圾邮件和反垃圾邮件也是这样你来我往:加一道题,对方就升级发信机器;升级检测手段,对方就换个马甲重来。道高一尺,魔高一丈,这句老话搬到今天一个字都不用改。Anubis 现在做的,不是终结这场比赛,是把下一回合的门票价格抬高一点。

对靠 Anubis 挡流量的站点来说,这是当下能拿到的最现实的解法。对普通访客来说,代价是偶尔多等几秒,或者被迫在隐私插件和访问权限之间选一个。至于指纹识别什么时候真的能接棒、能不能同样精准又不误伤——目前还看不清,值得盯的是它有没有落地的具体动作,而不是继续停留在“未来会更聪明”这句承诺里。