摘要:Linux内核基础设施维护者披露,git.kernel.org每天收到约600万次随机提交页面请求,约66%被Anubis挑战直接挡住,约33%能够完成工作量证明进入主站;在较宽松的估算下,合法请求只占约2%。大量爬虫没有使用高效的Git克隆,而是逐页渲染历史提交,迫使5个地理分布节点长期占用约14个CPU核心。AI数据获取正在把开源项目原本面向人类的公共服务,变成没有计费、身份和责任约束的数据供应层。

摘要
Linux内核基础设施维护者披露,git.kernel.org每天收到约600万次随机提交页面请求,约66%被Anubis挑战直接挡住,约33%能够完成工作量证明进入主站;在较宽松的估算下,合法请求只占约2%。大量爬虫没有使用高效的Git克隆,而是逐页渲染历史提交,迫使5个地理分布节点长期占用约14个CPU核心。AI数据获取正在把开源项目原本面向人类的公共服务,变成没有计费、身份和责任约束的数据供应层。
Linux内核的开发历史几乎完全公开。代码仓库、提交记录、邮件列表和补丁讨论构成了一套罕见的高质量工程语料:时间跨度长,技术讨论密集,变更可以追溯,且早期内容基本不受生成式AI文本污染。对训练代码模型的机构而言,这是一座极有价值的矿藏。
公开并不代表获取方式没有成本。Linux内核基础设施维护者Konstantin Ryabitsev在2026年8月公布了git.kernel.org的流量情况:该站点每天大约收到600万次请求,许多请求指向随机旧提交。约66%的请求被Anubis访问挑战立即挡住,约33%完成计算题后进入主站。即使采用对访问者较为宽松的判断,合法请求也只占总量约2%。
维护团队没有被彻底压垮,网站对正常开发者仍然响应迅速,但后台已经形成持续负载。分布在五个地理节点上的系统,任意时刻大约有14个CPU核心专门把Git提交渲染成HTML,提供给疑似爬虫。维护者的判断很直接:用于生成抓取页面的CPU周期,已经超过Git克隆等所有正常访问消耗。

最低效的抓取方式制造了最高成本
git.kernel.org本来就允许用户克隆仓库。获取完整历史的高效方法是执行一次Git克隆,然后在本地遍历对象。邮件列表归档同样可以通过Git仓库取得。这样的设计符合开源项目的长期保存理念:任何人都能留存副本,项目即使停止运营,历史也不会消失。
现实中的大量爬虫却逐个访问网页。linux.git约有148万次提交,git.kernel.org还托管约922个分叉仓库。后端使用Git对象复用存储这些分叉,并不会简单复制922份数据;对网页爬虫而言,每个分叉、每次提交、补丁视图、纯文本视图以及任意提交间差异都能组成有效URL。结果是爬虫可能反复请求同一批底层对象,却要求服务器每次运行cgit、生成页面并传输内容。
问题由此从“下载了多少字节”变成“迫使服务器执行了多少工作”。一次Git克隆主要消耗顺序读取、压缩和网络带宽,服务器能够缓存并高效复用;随机HTML请求不断触发提交解析、差异计算和模板渲染,缓存命中率低,CPU成本明显更高。若抓取方还遍历数百个近似分叉,重复数据会被一遍遍转换成页面。
这是一种典型的成本外部化。抓取机构省去了数据获取工程和去重工作,开源基金会却承担计算、流量、监控、反滥用与故障恢复成本。单次请求看似微小,数百万次自动访问叠加后,就成为公共基础设施的固定支出。
IP封禁为何逐渐失效
早期爬虫通常使用明确的User-Agent,并从少量云服务器集中访问。管理员可以通过日志识别异常模式,用fail2ban封禁IP,必要时直接屏蔽云服务商的自治系统号。即使偶尔影响正常自动化任务,规则仍有较高性价比。
随后爬虫开始伪装成普通浏览器,并把流量分散到大量地址。更麻烦的是住宅代理和移动代理:每个IP只发送四五次请求便消失,来源看起来像真实家庭网络或移动设备。等管理员确认异常时,地址已经不再出现;持续追加防火墙规则只会让规则集膨胀,还可能误伤正常用户。
住宅代理市场让这种分布式抓取变得便宜。一些代理SDK被嵌入应用、浏览器扩展甚至智能设备,用户的家庭连接在不够透明的情况下成为出口节点。对被访问网站来说,请求不再集中于易识别的数据中心,而是来自全球数百万个“正常”地址。传统以IP信誉为核心的反爬体系因此失去抓手。
Anubis能够提高门槛,却不能识别目的
git.kernel.org部署的Anubis采用工作量证明思路。浏览器访问页面时需要先完成一项计算挑战,正常用户偶尔访问几页,延迟和耗电通常可以接受;爬虫要抓取数百万页面,就必须为每次访问支付计算成本。这种方法不依赖验证码标注,也无需事先知道对方IP。
目前约三分之二请求在挑战阶段被挡住,说明工作量证明确实过滤了大量低成本爬虫。但仍有约三分之一请求愿意完成计算并进入主站。高价值训练数据足以让抓取方承担挑战成本,甚至可以使用专门算力批量求解。与此同时,挑战只证明访问者付出了一定计算,并不能证明它是人类、善意机器人或获得授权的数据使用者。
工作量证明还会把一部分成本转移到正常用户设备,增加无障碍访问、老旧浏览器和脚本客户端的适配难度。它适合作为紧急限流层,却很难单独构成长期的数据治理方案。
robots.txt失去约束力之后
传统网络爬虫生态依赖一种脆弱但有效的社会契约:网站通过robots.txt表达边界,搜索引擎通常遵守,双方通过索引流量形成交换。生成式AI训练改变了利益结构。抓取方获得可重复使用的训练资产,被抓取站点却未必得到可见流量;模型甚至可能在回答中替代原站点。
当部分爬虫隐藏身份、绕过robots.txt并使用住宅代理时,问题已经不只是带宽管理,而是公共数据资源的治理缺口。开源许可证解决代码复制、修改和分发的权利义务,却通常没有规定通过何种技术接口抓取、可以给托管方制造多少运营成本。代码许可与网站服务许可在这里出现分离:内容允许复制,不意味着服务器必须无限次替任何人渲染页面。
这一差异值得明确。开源项目完全可以继续允许所有人克隆Git数据,同时限制低效的逐页抓取;可以提供数据快照、对象存储镜像或批量导出接口,并要求大规模使用者采用这些渠道。限制访问方式并不等于关闭开源内容,而是保护公共服务的可持续性。
建立机器可用的数据出口
仅靠封禁会陷入攻防循环。更可行的方案是把机器访问从人类网页中分离出来。网页面向开发者查询和阅读,批量数据通过Git、归档快照、公共数据集或专用API提供。对已知研究机构和模型公司,可以发放身份凭据,设置并发与配额,要求标明用途并保留联系渠道。
技术上还可以对不同操作采用不同成本模型。普通提交页适合缓存;任意两次提交的差异计算、深层历史遍历和跨分叉重复请求应设置更严格速率限制。服务器可识别访问序列而非单个IP,例如短时间内遍历连续哈希、跨大量旧分叉请求相同对象,或持续命中极低访问量页面。即便流量来自住宅代理,行为模式仍可能暴露自动化目的。
大型AI公司则应承担更明确的“数据供应链责任”。在抓取前检查站点声明,优先使用官方批量接口,对内容去重,记录来源和时间,并为高成本公共数据源提供镜像、算力或资金支持。这些要求不复杂,真正缺少的是行业约束和可审计承诺。
对企业知识平台同样适用
git.kernel.org的案例也提醒企业,智能体接入内部知识库时不能沿用“能打开网页就能无限访问”的思路。代理会以远高于人的速度搜索、抓取、生成摘要和递归跟随链接。如果每次问答都重新解析文档、渲染报表或查询生产数据库,内部系统也会出现类似背景负载。
企业应为智能体提供受控的数据接口:预先索引常用文档,区分实时查询和缓存数据,限制递归深度与并发,给昂贵操作设置预算,并在日志中保留代理身份、调用目的和责任主体。权限系统也要从“用户能否查看页面”扩展为“代理能否批量读取、能否长期保存、能否跨系统组合”。
开源基础设施长期建立在一种朴素假设上:访问者数量很多,但绝大多数以人的速度使用服务。生成式AI打破了这一假设。机器访问拥有近乎无限的耐心,可以遍历人类永远不会点开的数十亿URL,也能把成本分散到全球代理网络。git.kernel.org的600万次请求只是一个清晰样本。未来公共知识能否继续开放,很大程度上取决于行业能否建立一套新的交换规则:内容可以被学习,基础设施的成本也必须有人承担。