Anubis 是一款通过工作量证明(Proof-of-Work, PoW)挑战保护网站免受 AI 爬虫侵扰的反向代理工具。它通过强制客户端(浏览器)完成计算密集型任务来区分人类用户与自动化爬虫,从而阻止恶意爬虫对服务器资源的无限制消耗。
大型语言模型(LLM)训练依赖海量数据抓取,导致爬虫请求量呈指数级增长,中小型网站服务器资源被恶意耗尽。 传统 CAPTCHA 影响用户体验,而 Cloudflare 等方案对自建架构或特定合规场景不适用。Anubis 的 SHA256 计算消耗使爬虫规模化抓取时,单次请求成本提升 1000 倍以上,迫使恶意行为无利可图。
Anubis 代表了开源社区对 AI 爬虫滥用问题的创造性反击,其 PoW 机制以低成本实现高效防护,成为 Cloudflare 之外的轻量级替代方案。项目遵守MIT开源协议。
核心原理
SHA256 工作量证明挑战:
用户访问网站时,Anubis 会返回一段 JavaScript 代码,要求客户端计算一个特定字符串的 SHA256 哈希值。
字符串由两部分组成:
challenge:用户 IP、浏览器 User-Agent、当前日期、Anubis 公钥等公开信息。
nonce:递增的迭代次数(从 1 开始)。
目标:计算出的哈希值前 5 位必须为 0(默认设定),否则 nonce 自增并重新计算,直至满足条件。
此过程消耗大量 CPU 资源,迫使 AI 爬虫因计算成本过高而放弃。
验证与放行:
客户端提交符合条件的 nonce 后,Anubis 服务器验证哈希值有效性。
验证通过后,用户被重定向至目标网站,并写入 Cookie 避免后续请求重复验证。
实际效果
有站长实测显示:97% 的爬虫流量因无法完成计算被拦截(2.5 小时内 81,000 次请求仅 3% 通过)。
对真实用户影响极小:现代浏览器可在毫秒级完成计算,仅首次访问需验证。
使用方法
1. 部署 Anubis 实例
步骤:
从 GitHub 克隆项目并配置(需 Python 环境)。
修改 config.py 文件,指定目标网站和 PoW 难度(如哈希前导零数量)。
目录结构示例:
anubis/
├── anubis/ # 核心代码
│ ├── config.py # 配置文件
│ ├── main.py # 启动入口
│ └── routes/ # 路由逻辑
├── tests/ # 测试用例
└── requirements.txt # 依赖库
2. 配置反向代理
将 Anubis 置于目标网站前端,例如使用 Nginx 或 Caddy:
# Nginx 配置示例
location / {
proxy_pass http://localhost:3000; # Anubis 实例地址
}
用户访问网站时,请求首先被重定向至 Anubis 的 PoW 挑战页面。
3. 定制化设置
允许合法爬虫:
在配置文件中添加 robots.txt 允许的爬虫(如搜索引擎),避免误封。
调整计算难度:
修改哈希前导零数量(例如从 5 位调整为 4 位),平衡安全性与用户体验。
项目地址:
https://github.com/TecharoHQ/anubis
安装方法:
https://anubis.techaro.lol/docs/admin/native-install/
https://anubis.techaro.lol/docs/admin/installation
No comments:
Post a Comment