保护网站免受 AI 爬虫侵扰的开源工具-Anubis
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 爬虫因计算成本过高而放弃。
- 目标:计算出的哈希值前 5 位必须为 0(默认设定),否则
- 验证与放行:
- 客户端提交符合条件的
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
发表回复