「我们到底挡住了谁?」一篇题为 Who does Anubis actually stop? 的博文抛出这个问题,戳中了这两年站长圈最纠结的一根神经。Anubis 是一个开源的反爬工具,用工作量证明(PoW)挑战——浏览器算一道题、拿到 cookie——来拦掉那些不执行 JS 的机器爬虫,尤其是为大模型公司做数据抓取的 agent。
Lobsters 上同期热帖 An update on the scraper situation(104 分、43 条评论)把话题从「工具好不好用」拉到了「整个抓取生态烂到什么程度」。
Anubis 拦得住的,和它拦不住的
原作者论点是:Anubis 想拦的目标——那些由 LLM agent 驱动、临时拼出来的爬虫程序——对这道前端挑战能轻松绕过。一道前端 PoW 对「聪明」的对手形同虚设。
评论区里有人(zk)直接反驳这个前提:agent 驱动、临时拼出来的爬虫根本不是 Anubis 的猎物;它要拦的是那些出去 indiscriminately slurp 的「笨」爬虫。它们的创造者懒得为少数装了 Anubis 的站点专门写绕过逻辑——「烦到一定程度,这些站点抓不到也就抓不到了」。换句话说,Anubis 的定位是「足够烦」,不是「绝对挡死」。
但更多人指出它真正的副作用。runxiyu 说,自己关掉 JS 的手机上、在不熟悉的站点上,Anubis 就把他本人挡在了外面。splitbrain 更尖刻:防住住宅代理爬虫,一个按钮 + 发 cookie 就够了,Apache 里就能实现,根本用不着复杂的 PoW。icefox 一句话总结:「Anubis 不过滤 bot,它限制的是客户端速率。」
真正让社区反胃的:住宅代理
scraper situation 那帖的楼层几乎一边倒地倒向对「住宅代理」(residential proxy)的厌恶。thomas0 说,他近期了解的各种灰色手段里,住宅代理最扎眼——他甚至不敢信它合法,应该和僵尸网络归一类,叫「合法化的 botnet」。
原理不复杂:供应商把 SDK 塞进智能电视 App 之类的地方,借用普通用户的家庭 IP 出口流量。爬虫付钱走这些真实住宅 IP,站点看到的就「像人」。tomsmeding 反问:除了作恶,住宅代理有什么正当用途?有人接话给了两个——档案抓取和善意爬虫。但 fanf(投稿人)点破:这两类客户端通常直接访问站点,正经归档者和爬虫根本不需要住宅代理;一旦一个爬虫需要住宅代理,几乎可以判定它在耍坏。
那种「把对方当敌人」的不适感是双向的:当你是被抓的一方时反感,当你自己抓大厂托管的内容时又同情归档者。这大概就是整条线程里每个人都对住宅代理有生理性厌恶的原因。
权衡没有标准答案
把两边摆平看,争论的根子在于 Anubis 这类工具同时做了三件不同的事,却常被混为一谈:
- 挡笨爬虫:PoW 对「懒得绕过」的批量抓取确实有效,成本接近于零地劝退大部分。
- 限速率:它本质是个速率限制器,对真人里关 JS、用老旧移动浏览器的人有附带伤害。
- 对抗体面对手:对 dedicated 的、愿意上住宅代理的抓取方,PoW 基本失效。
所以「Anubis 该不该上」没有统一结论。如果你的敌人是懒爬虫,它划算;如果你的访客里有大量禁用 JS 的移动用户,它误伤自己人;如果你面对的是拿住宅 IP 当弹药的反爬对抗,它挡不住,你该操心的是更上游的代理生意。
从公开讨论看,站点主人和抓取方之间的信任已经耗尽。PoW、cookie 闸门、user-agent 屏蔽都是修补,真正把 Web 变成战场的是住宅代理这种「把普通人家里 IP 拿去卖」的产业链。工具能缓解症状,治不了病根。
参考链接:
- Lobsters: An update on the scraper situation(LWN 转载,104 分):https://lobste.rs/s/kpaxih/update_on_scraper_situation
- Lobsters: Who does Anubis actually stop?:https://lobste.rs/s/ktew3s/who_does_anubis_actually_stop
- 住宅代理调查(评论中引用):https://spur.us/blog/smart-tv-apps-residential-proxy-sdks