Hotdry.

Article

Git Forge AI爬虫防护:基于行为分析与指纹识别的工程实践

面对AI爬虫对Git仓库的大规模代码抓取,探讨基于行为分析、速率限制和指纹识别的防护系统构建,分享Iocaine 3与Nam-Shub-of-Enki分类器的实战配置参数。

2025-12-12ai-security

在 2025 年的今天,自托管 Git Forge 面临着一个前所未有的挑战:AI 爬虫的大规模代码抓取。这些爬虫不仅无视robots.txt,而且使用数以万计的代理 IP 进行分布式攻击,传统防护手段几乎失效。本文基于 VulpineCitrus 的实战经验,深入探讨如何构建基于行为分析、速率限制和指纹识别的 AI 爬虫检测系统,保护 Git 仓库免遭大规模代码抓取。

一、AI 爬虫对 Git 仓库的威胁规模

Git 仓库的页面数量呈指数级增长。以一个 Linux 仓库为例,仅 master 分支到 v6.17 标签的 1,383,738 个提交,就能生成约 3240 亿个可抓取页面。这个数字的计算公式为:

(Ncommits × Nfiles) × 2 + (Ncommits × Nfilesandfolders) × 2 + Ncommits × 3

其中每个文件在每个提交中都可以被原始下载、git-blame 查看,每个文件或文件夹页面都可以被访问,每个提交的差异页面都可以被查看。

这种规模的数据量对 AI 训练具有巨大价值,导致爬虫不惜成本地进行抓取。根据 VulpineCitrus 的实测数据,未受保护的 Git Forge 服务器:

  • CPU 使用率高达 99% 以上(4 核全满)
  • 内存使用从 1.5GiB 激增至 2.5GiB 以上
  • 网络出口带宽持续在 32Mbps(4MBps)
  • 服务器功耗从 150W 增加至 200W,年电费增加约 60 欧元
  • 影响整个局域网的网络性能

二、传统防护措施的局限性

1. 反向代理缓存:完全失效

Nginx 缓存配置看似合理,但对 Git 仓库防护完全无效:

proxy_cache_path /var/cache/nginx/forge/ levels=1:2 keys_zone=forgecache:100m;

location / {
    proxy_cache forgecache;
    proxy_buffering on;
    proxy_cache_valid any 1h;
    add_header X-Cached $upstream_cache_status;
    expires 1h;
    proxy_ignore_headers "Set-Cookie";
    proxy_hide_header "Set-Cookie";
}

问题在于 AI 爬虫很少重复访问同一资源,它们协调地遍历所有可能的页面组合。缓存命中率极低,反而增加了认证页面的显示问题。

2. IP 级速率限制:阻碍合法用户

基于 IP 的速率限制配置:

limit_req_zone wholeforge zone=wholeforge:10m rate=3r/s;

location ^~ (/alopexlemoni/GenderDysphoria.fyi|/oror/necro|/Lymkwi/linux|/vc-archival/youtube-dl-original|/reibooru/reibooru) {
    limit_req zone=wholeforge nodelay;
    proxy_pass http://<upstream>/;
}

这种方法有两个致命缺陷:

  1. 爬虫使用大量住宅代理 IP,单个 IP 请求量不大但总量巨大
  2. 3r/s 的限制严重阻碍了合法用户的正常访问

3. 手动 IP/ASN 封锁:治标不治本

虽然可以手动封锁已知恶意 ASN(如华为云 AS136907、阿里云 AS45102),但:

  • 爬虫会迅速切换到其他 ASN
  • 住宅 ISP 的 IP 难以区分(如 VNPT Corp AS45899)
  • 维护成本极高,需要持续更新黑名单

三、行为分析与指纹识别的技术原理

1. 用户代理一致性检查

Nam-Shub-of-Enki 分类器的核心创新在于用户代理的一致性验证。它检测用户代理字符串中的技术矛盾,例如:

  • 时代错位:Windows NT 4 声称支持 Chrome 和 TLS 1.3
  • 技术冲突:报告支持 HTTP/2 的客户端声称使用不支持 HTTP/2 的浏览器版本
  • 未来声明:声称使用尚未发布的软件版本

这些矛盾表明用户代理是程序生成的 "伪造浏览器",而非真实的人类用户。

2. AI 用户代理识别

分类器内置了完整的 AI 爬虫用户代理数据库,包括:

  • anthropic-aiclaude-webclaudebot(Anthropic)
  • chatgpt-usergptbotoai-searchbot(OpenAI)
  • google-extendedpetalbot(Google)
  • amazonbotfacebookbot等商业爬虫

3. 请求模式分析

AI 爬虫的请求模式具有明显特征:

  • 规律性攻击波:每 3 小时出现一次,持续 1.5 小时的攻击波
  • 指数级增长:攻击开始时请求量呈指数增长
  • 阈值触发停止:当服务器响应延迟达到阈值或开始返回错误时停止
  • IP 轮换策略:单个 IP 贡献 1-60 个请求,然后切换到下一个 IP

四、Iocaine 3 与 Nam-Shub-of-Enki 的工程实现

1. 系统架构

用户请求 → Nginx反向代理 → Iocaine 3中间件 → 分类决策
                                    ↓
                        合法请求 → 421重定向 → Git Forge
                        恶意请求 → 200 OK + 垃圾内容

2. Docker 部署配置

services:
  iocaine:
    image: algernon/iocaine:3
    volumes:
      - ./config:/etc/iocaine/config.d
      - ./data:/data
    environment:
      - RUST_LOG=iocaine=info
    logging:
      driver: "json-file"
      options:
        max-size: "50m"

3. Nam-Shub-of-Enki 分类器配置

checks {
    disable cgi-bin-trap
    
    asn {
        database-path "/data/ipinfo_lite.mmdb"
        asns "45102" "136907"
    }
    ai-robots-txt {
        path "/data/ai.robots.txt-robots.json"
    }
    generated-urls {
        identifiers "deflagration"
    }
    big-tech {
        enable #true
    }
    commercial_scrapers {
        enable #true
    }
}

logging {
    enable #true
    classification {
        enable #true
    }
}

4. Nginx 集成配置

关键配置:仅将 GET 和 HEAD 请求路由到 Iocaine,避免大文件上传被阻塞:

map $request_method $upstream_location {
    GET    <iocaine upstream>;
    HEAD   <iocaine upstream>;
    default <your actual upstream>;
}

map $request_method $upstream_log {
    GET    bot_access;
    HEAD   bot_access;
    default access;
}

location / {
    proxy_cache off;
    access_log /var/log/nginx/$upstream_log.log combined;
    proxy_intercept_errors on;
    error_page 421 = @fallback;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://$upstream_location;
}

location @fallback {
    proxy_pass http://<git forge upstream>;
}

五、监控指标与可落地参数

1. 核心监控指标

  • 分类比例:目标 > 96% 请求被分类为机器人
  • 垃圾数据量:每小时 150MB,每天 3.4GB,每周 22GB
  • 请求速率:AI 爬虫维持 15 QPS(900 请求 / 分钟)
  • 伪造浏览器:背景噪音 2-3 QPS,攻击波期间激增
  • 资源使用:CPU 使用率从 99% 降至 4%,功耗降低 25%

2. 性能参数阈值

  • Iocaine CPU 时间:<25 毫秒 / 秒
  • 垃圾生成延迟:<100 毫秒
  • 分类决策时间:<10 毫秒
  • 内存占用:<100MB(不含日志)

3. 攻击特征识别参数

  • 攻击波周期:3 小时 ±15 分钟
  • 攻击持续时间:1.5 小时 ±10 分钟
  • IP 贡献范围:1-60 请求 / IP
  • ASN 分布:重点关注 Datacamp Limited、GTT Communications、M247 Europe 等

4. 日志管理配置

  • 分类日志大小限制:50MB
  • 访问日志分离:机器人访问与正常访问分开记录
  • 日志保留策略:分类日志保留 7 天,访问日志保留 30 天

六、防护效果与工程实践建议

1. 实测效果数据

实施 Iocaine 3 后:

  • 服务器 CPU 使用率从 99%+ 降至 4%
  • 内存使用稳定在 1.5-2GiB 范围
  • 网络出口带宽恢复正常水平
  • 服务器功耗从 200W 降至 150W
  • 96.7% 的请求被正确分类为机器人

2. 工程实践建议

部署阶段:

  1. 先部署不带分类器的 Iocaine 2 进行测试
  2. 逐步添加 Nam-Shub-of-Enki 分类器
  3. 监控分类准确率和误判率
  4. 调整分类器参数优化性能

配置优化:

  1. 根据实际流量调整垃圾生成参数
  2. 定期更新 AI 用户代理数据库
  3. 监控攻击模式调整检测阈值
  4. 建立 ASN 信誉数据库

运维监控:

  1. 实现 Prometheus + Grafana 监控栈
  2. 设置分类比例告警(<95%)
  3. 监控攻击波模式变化
  4. 定期分析日志优化规则

3. 技术局限性认知

需要明确的是,Iocaine 不是让爬虫消失的魔法,而是:

  • 资源转移:将服务器负载转移到爬虫端
  • 成本增加:增加爬虫的数据处理成本
  • 长期威慑:通过提供无价值数据降低抓取动机
  • 误判风险:可能存在对特殊客户端的误判

七、未来展望与防御演进

1. 技术发展趋势

  • AI 爬虫进化:更智能的用户代理伪造和请求模式模仿
  • 住宅代理滥用:更多来自家庭 ISP 的代理 IP 参与攻击
  • 协议级攻击:可能出现的 Git 协议直接攻击
  • 分布式协调:更复杂的爬虫网络协调机制

2. 防御技术演进方向

  • 机器学习分类:基于请求序列的机器学习分类
  • 行为指纹库:建立爬虫行为特征数据库
  • 动态挑战:基于客户端能力的动态挑战生成
  • 信誉系统:IP、ASN、用户代理的多维信誉评分

3. 社区协作建议

  • 共享攻击特征:建立开源爬虫特征数据库
  • 标准化防护接口:定义统一的爬虫防护 API
  • 联合防御网络:建立自托管服务联合防御机制
  • 法律与技术结合:推动技术防护与法律手段的结合

结语

保护 Git Forge 免受 AI 爬虫攻击是一场持续的技术攻防战。基于行为分析和指纹识别的防护系统,通过 Iocaine 3 和 Nam-Shub-of-Enki 分类器的组合,提供了有效的工程解决方案。然而,这仅仅是防御的开始,随着 AI 爬虫技术的不断进化,防御系统也需要持续迭代。

关键的成功因素在于:

  1. 深度理解攻击模式:不仅仅是技术实现,更是对攻击者行为模式的理解
  2. 多层防御策略:没有银弹,需要缓存、速率限制、分类器的组合
  3. 持续监控优化:防御是动态过程,需要基于数据的持续优化
  4. 社区协作:单个站点的防御有限,需要社区共享情报和工具

在 AI 时代,保护开源代码不仅是技术挑战,更是对开源精神的捍卫。通过技术手段,我们能够确保 Git 仓库继续为开发者服务,而不是成为 AI 训练的无偿数据源。


资料来源:

  1. VulpineCitrus, "Guarding My Git Forge Against AI Scrapers", 2025-12-02
  2. Iocaine 3 Documentation, "Nam-Shub-of-Enki Classifier", 2025
  3. Jackson Chen, "I upgraded to iocaine v3 and rediscovered The Horrors of Generative AI scraping", 2025-11-23

ai-security

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com