Anubis 是一款通过工作量证明(Proof-of-Work, PoW)挑战保护网站免受 AI 爬虫侵扰的反向代理工具。它通过强制客户端(浏览器)完成计算密集型任务来区分人类用户与自动化爬虫,从而阻止恶意爬虫对服务器资源的无限制消耗。

大型语言模型(LLM)训练依赖海量数据抓取,导致爬虫请求量呈指数级增长,中小型网站服务器资源被恶意耗尽。 传统 CAPTCHA 影响用户体验,而 Cloudflare 等方案对自建架构或特定合规场景不适用。Anubis 的 SHA256 计算消耗使爬虫规模化抓取时,单次请求成本提升 1000 倍以上,迫使恶意行为无利可图。

Anubis 代表了开源社区对 AI 爬虫滥用问题的创造性反击,其 PoW 机制以低成本实现高效防护,成为 Cloudflare 之外的轻量级替代方案。项目遵守MIT开源协议。

核心原理

  1. SHA256 工作量证明挑战
    • 用户访问网站时,Anubis 会返回一段 JavaScript 代码,要求客户端计算一个特定字符串的 SHA256 哈希值。
    • 字符串由两部分组成:
  • challenge:用户 IP、浏览器 User-Agent、当前日期、Anubis 公钥等公开信息。
  • nonce:递增的迭代次数(从 1 开始)。
    • 目标:计算出的哈希值前 5 位必须为 0(默认设定),否则 nonce 自增并重新计算,直至满足条件。
    • 此过程消耗大量 CPU 资源,迫使 AI 爬虫因计算成本过高而放弃。
  1. 验证与放行
    • 客户端提交符合条件的 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