Anubis 是一款专为应对网络爬虫(特别是 AI 驱动的爬虫)设计的开源防爬工具,由 TecharoHQ 开发。它通过“工作量证明”(Proof-of-Work, PoW)机制保护网站资源,旨在减缓或阻止自动化爬虫对网站的过度访问,同时尽量减少对合法用户的影响。以下是对 Anubis 的详细介绍,包括其工作原理、功能、应用场景、优缺点以及部署方式。
Anubis 的背景与目的
随着 AI 爬虫(如用于数据训练的大型语言模型爬虫)的激增,许多网站面临资源被过度抓取的问题。这些爬虫往往无视 robots.txt 等传统限制,导致服务器负载过高甚至宕机。Anubis 的设计灵感来源于比特币的工作量证明机制,旨在通过增加爬虫的计算成本来保护网站资源。它的核心理念是:对于单个合法用户,额外的计算负担是可以接受的;但对于大规模爬取的机器人,累积的计算成本会显著提高,从而降低其抓取效率。
Anubis 被描述为一种“折衷方案”,它的开发者明确表示,这是一个“核选项”(nuclear response),适用于那些无法或不愿使用 Cloudflare 等第三方服务的场景。
工作原理
Anubis 作为一个反向代理,部署在目标网站前端,所有访问请求都会先经过它。其防爬机制主要基于以下步骤:
-
挑战生成:当用户或爬虫访问网站时,Anubis 会生成一个基于 SHA-256 的工作量证明挑战。这个挑战由两部分组成:
-
Challenge:包含用户的公开信息(如 IP 地址、User-Agent、当前日期、Anubis 的公钥等)。
-
Nonce:一个计数器,从 1 开始递增。
-
计算要求:客户端必须在浏览器中运行一段 JavaScript 代码,反复计算 SHA-256 哈希值,直到结果的前五位均为 0(默认设置,可调整难度)。这通常需要数千到数百万次计算,具体取决于随机性。
-
验证与放行:当客户端计算出符合条件的哈希值后,将结果(Nonce 值)提交给 Anubis 服务器。服务器验证通过后,用户会被重定向到目标网站,并获得一个 Cookie,免除后续请求的挑战。
这种机制借鉴了 Hashcash(用于减少垃圾邮件的 PoW 系统),对爬虫的资源消耗远高于人类用户,因为爬虫需要为每个请求重复执行高成本计算。
主要功能
-
爬虫阻挡:通过强制执行计算密集型任务,有效减缓或阻止 AI 爬虫的访问。
-
用户过滤:Anubis 可以根据 User-Agent 判断是否触发挑战,常见浏览器用户通常可以直接通过,而已知的爬虫 User-Agent 会被拦截。
-
登录豁免:对于已登录用户,Anubis 提供豁免机制,避免重复挑战(需合并相关补丁)。
-
开源性:代码托管在 GitHub(TecharoHQ/anubis),用户可以自由修改和部署。
-
可配置性:支持调整 PoW 难度(如要求哈希值前几位为 0 的数量),以平衡防护效果和用户体验。
应用场景
-
小型独立网站:不依赖 Cloudflare 等商业 CDN 的网站,可以使用 Anubis 自建防护。
-
开源项目托管:如 Git 仓库(Forgejo、Gitea),防止爬虫批量下载历史提交和文件。
-
高价值数据站点:保护对爬虫敏感的内容,如原创文章、数据集等。
-
测试与实验:开发者可以将其部署在测试环境,评估其对特定流量模式的防护效果。
例如,一个站长报告,在 2.5 小时内,他的网站收到 81,000 个请求,其中只有 3% 通过了 Anubis 的挑战,表明 97% 的流量可能是机器人。
优点
-
高效阻挡爬虫:对大规模自动化访问构成显著障碍,迫使爬虫开发者投入更多资源。
-
开源与自托管:无需依赖第三方服务,用户完全掌控部署和配置。
-
灵活性:支持自定义规则(如特定页面触发挑战),适应不同需求。
-
轻量级:作为一个反向代理,资源占用相对较低,适合小型服务器。
缺点
-
用户体验影响:合法用户需要等待 1-2 分钟完成计算(视设备性能而定),可能导致流失。例如,手机浏览器可能需要近 2 分钟。
-
搜索引擎问题:Anubis 会阻止部分搜索引擎索引(如 Googlebot),这被视为特性而非缺陷,但可能不适合需要 SEO 的网站。
-
技术门槛:部署和配置需要一定的技术能力,不如 Cloudflare 简单。
-
有限针对性:对于愿意投入资源优化的爬虫开发者,Anubis 的防护可能被绕过(如通过高性能计算或伪装 User-Agent)。
部署方式
Anubis 的安装和使用需要一定的服务器管理知识。以下是简要步骤:
-
获取源码:从 GitHub(TecharoHQ/anubis)下载代码。
-
环境准备:需要支持 Node.js 的服务器,确保网络配置允许反向代理。
-
配置:编辑配置文件,指定目标网站地址、PoW 难度等参数。
-
运行:启动 Anubis 实例,将其置于网站前端(如通过 Nginx 转发)。
-
测试:访问 anubis.techaro.lol(官方测试实例)体验效果。
开发者还提供了 Discord 频道(需加入 Patreon)用于实时支持。
与其他方案的对比
-
Cloudflare:提供更全面的防护(如 DDoS 防御、WAF),但需商业服务支持,且非开源。Anubis 更适合不愿依赖第三方的情况。
-
Robots.txt:传统方法对现代 AI 爬虫无效,因其常忽略规则。
-
验证码:如 reCAPTCHA,依赖第三方且对用户更友好,但无法完全阻止高级爬虫。
Anubis 的独特之处在于其“计算成本壁垒”,而不是依赖黑名单或行为分析。
实际效果与反馈
总结
Anubis 是一款针对 AI 爬虫的强力工具,通过工作量证明机制为网站提供了一种新颖的防护手段。它特别适合小型自托管网站或对数据隐私敏感的项目。然而,其对用户体验的潜在影响和对搜索引擎的阻隔使其并非通用的解决方案。开发者坦言,这是一个“不得已的妥协”,反映了当前互联网爬虫问题的严峻性。如果你面临类似困扰,且不介意额外的配置成本,Anubis 值得一试。