爬虫成灾:kernel.org 用 20% 算力给 AI 爬虫渲染 git 提交
文章摘要
Linux 内核基础设施维护者 Konstantin Ryabitsev(monsieuricon)在这篇 2026 年 8 月 29 日的文章里,第一次给出了 AI 爬虫对 kernel.org 影响的硬数据。
核心结论:他们花在给爬虫渲染 git 提交上的 CPU 周期,比所有其他合法访问(包括 git clone)加起来还多。在 5 个地理分布节点、共 90 核的集群上,任何时刻都有 14–16 个核心什么都不干,只在把 git commit 渲染成 HTML。平均占总容量的 20%,而且爬虫是成波涌来的,实际曲线比 20% 的平线尖锐得多。
为什么 git.kernel.org 是爬虫的目标:Linux 的开发完全公开,从可克隆的 git 仓库到实时可跟踪的讨论存档。对大语言模型来说这是学习数据的金矿,因为这些内容不仅立即可得,而且容易筛选出纯粹的、未被 LLM 污染的前 AI 时代内容。作者写道,用 LLM 生成的内容训练 LLM 相当于给它一种数字朊病毒病,所以像内核提交史这种保证无 LLM 的来源就格外珍贵。
最愚蠢的做法:作者反复强调,kernel.org 几乎所有东西都可以克隆——包括整个 LKML 存档,”全都是 git 仓库,一路到底”。理论上一个自称”人工智能”的东西应该选最高效的方式:克隆仓库、遍历每个提交、完事。但爬虫选了最蠢的路——逐个提交渲染成 HTML 再解析。linux.git 约有 148 万个提交,git.kernel.org 上有约 922 个 fork(后端其实极其高效,因为大部分对象在各个 fork 间共享),但对爬虫而言这意味着几十亿个有效 URL,最后只换回 922 份完全重复的同样 148 万个提交。而且不止提交本身——patch、plain 渲染、任意两个提交之间的 diff,cgit 全都乐意提供,这在互联网属于人类和遵守 robots.txt 的爬虫的年代很完美,现在则很可怕:单是 linux.git 的一个 fork 就能生成天文数字的有效 URL。
封锁的军备竞赛分为几个阶段:最初爬虫会在 User-Agent 里老实报上身份,fail2ban 即可;然后它们开始伪装成随机的普通浏览器,于是改按 IP 封(一个 IP 试图抓取某个八年前废弃 fork 的每一个提交,显然不是”一个疯狂点击每个链接的 Windows Chrome 用户”);接着它们扩散到整个子网,于是封整个 ASN(来自 Google Compute 却自称 Firefox,封得理直气壮)。
然后事情变得真正难看:爬虫开始来自数以百万计的随机住宅和移动 IP,全都伪装成现代浏览器。这样的 IP 发 4–5 个请求后再也不出现。封它们毫无意义,因为等你判断出它是机器人时它已经走完了,你只是白白撑大了防火墙规则集。”它们像蝗虫一样降临,又快又狠,直到系统倒下,然后转向下一个目标,等你恢复再回来。周而复始。”作者点名了原因:“代理 SDK 变现”这门大生意,”你的电视很可能正在干这事”。
Anubis 的兴衰:大约一年前他们部署了 Anubis 工作量证明(要求计算某个字符串使其与来访 IP 加上一个密钥的 SHA256 含 4 个前导零)。效果立竿见影,机器人直接放弃,”几个月的极乐时光”。几个月后机器人开始解难度 4,于是提到难度 5——合法用户明显更烦躁了,难度 5 在移动设备上要算几秒钟,手机会烫手,但又买来了几个月的和平。然后机器人也开始解难度 5 了。
现状:git.kernel.org 每天收到约 600 万个索取随机提交的请求,其中 66% 仍被 Anubis 挡在门外,但 33% 已经在解出数学题后进入主站——因为他们提供的东西显然值得花大量周期去算 Anubis 挑战。加上一堆宽松假设后,合法请求只占 git.kernel.org 流量的约 2%。
值得注意的是,作者说真正把他们搞垮的通常不是爬虫,而是设计糟糕的 CI 系统——比如从 20 个节点同时对 stable.git 做浅克隆。”浅克隆很糟糕。如果你要干这种缺德事,就自己跑一个镜像。”
出路不明。他们正在关闭功能以减少可爬取的 URL 数量,并对昂贵操作加门槛,”匿名访问会失去一些功能,相信我,我们和你一样讨厌这样,但现在这是必需的”。作者悲观地指出没有简单解法:提供定制”AI”模型的公司每天都在冒出来,全都饥渴地要训练数据;应用开发者仍在找变现方式,所以会继续把你家的电器变成攻击载体。唯一的承诺是:所有数据仍然对任何索取的人开放下载,只是可能要多跳几道圈。
HN 评论精华
帖子 1384 分。讨论主要分成三条线:为什么不缓存、Anubis 到底有没有用、以及这些爬虫究竟是谁。
“为什么不加个缓存?”是被反复提出又反复驳回的问题。 Zariel、chuckadams、throwawayffffas 等人第一反应都是在前面加 Varnish。teo_zero、kijin、rcxdude 给出了同样的答复:可能的 URL 有天文数字之多,即使归结到几百万个真实提交,渲染出的 HTML 也各不相同——”你的缓存总是满的,但命中率惨不忍睹”。mik1998 补充:”缓存会在旧提交被再次访问之间被驱逐掉。”
有一位用户 oowa 反复刷屏坚称这”完全可以在一次 hackathon 里解决”、”说到底只有 7GB 数据”、”流媒体服务早就用类似模式解决了”,但从未给出具体方案,被踩了下去。skybrian 贴出了一个更有信息量的角度:cgit 的实现按现代标准非常低效,而与其用 Anubis 让客户端做假工作,也许该让客户端在 JavaScript 里做真工作,服务端就不用干了。
浅克隆为什么有害是本帖最有教育意义的技术插曲。easton 提问后,jacobvosmaer 给出了清晰解释:正常克隆可以复用服务器磁盘上已存储的 delta 压缩数据;浅克隆施加了一个负向约束——不要传输请求深度之外的数据,于是包含未请求数据的预计算 delta 链变得不可用,服务器必须实时重新做 delta 压缩。Hackbraten 补充了一个引人注目的历史:早在 LLM 爬虫出现之前至少十年,GitHub 的工程师就在联系各大包管理器项目请他们放弃浅克隆,理由完全相同。ygouzerh 和 radarsat1 都表示很意外——”我们一直用浅克隆来加速 CI,完全不知道服务端代价这么大”。crote 提出了一个建设性想法:为什么不引入”半浅克隆”选项?我做浅克隆不是因为只想要某个提交,而是不想为完整历史烧掉巨量磁盘和带宽;服务器多发点数据我完全不介意——”100MB 的浅检出附带 400MB 垃圾,仍然好过克隆整个 5GB 历史”。
Anubis 的争论是全帖最激烈的部分。 tptacek 开场就说 Tavis Ormandy 差不多一年前就预言了这个结局:Anubis 从来没有真正成立过——高性能爬虫比终端用户更有能力应付工作量证明。工作量证明对密码哈希有意义,因为对密码的任何一次猜测边际效用为零;但爬虫的每个请求对它自己都是有产出的。他后来把立场精确化为一句话:“我不是在劝你别跑 Anubis,我只是说这是糟糕的计算机科学。”
反方拿出了实测数据。nneonneo 指出内核那边觉得它有效——66% 的爬虫被直接挡回。kstrauser 提供了本帖最有说服力的单条证据:他的 Forgejo 服务器此前每天收到约 60 万个爬虫的愚蠢查询,装上 Anubis 几个月后是每天约 1.4 万——”它不应该能把我的流量削减 98%,但实际上它确实做到了”。他还补了一句尖锐的观察:”最滥用的爬虫是由极其不会编程的人运营的。如果他们会,就不会去爬’这个仓库历史上每个提交对每个文件的 git blame’的所有排列组合。”当被问及是否试过只要求 JavaScript 而不做工作量证明时,他回答:有帮助,但远不如 Anubis。
harshreality 把争论重构得更清楚:反对者的说法不是”热情过头了”,而是”Anubis 在理论上作为屏障说不通”——但只要它经验上有效(哪怕只是暂时的),谁在乎呢?他说自己几周前观察到通过挑战的机器人多了一两个数量级,但关掉 Anubis 后机器人是原来的 2 倍多。他还预告了下一轮军备竞赛:Anubis 计划切换到 wasm hashx。crote 用一个类比支持这一方:现实世界不在乎你的计算机科学是否严谨,只在乎它管不管用——”这就像说因为我们永远找不到所有情况下的最优解,就该彻底放弃所有 NP 难问题;而现实世界里人们对一个几乎总能给出接近最优解的路径规划器非常满意”。FridgeSeal 补充:批评它不完美的人可以通过提出一个具体替代方案来推进讨论,因为”Anubis 的替代品不是’某个更好但没被选中的东西’,而是’完全不设防’“。
yorwba 给出了理论上最精确的辩护:工作量证明要生效,不需要爬虫的算力小于用户,只需要它们的算力优势小于它们本来拥有的负载生成优势;而且和合法用户不同,爬虫并不精挑细选 URL,平均单次收益很低,只能靠量取胜。
反方也有实质性回击。Y_Y 指出代理冰箱只会把 Anubis 挑战转发给爬虫控制的专用算力机去高效求解。oasisbob 从工程角度补充:住宅出口代理基本只是用 SOCKS 之类的隧道协议转发字节,现代爬虫还需要控制自己的 TLS 指纹,光靠设备上的 TLS 库做不到。lxgr 认为这本质上只是”2+2 等于几”的老式文本验证码加了几层计算步骤。tptacek 被追问了很多次”那你的更好方案是什么”,他表示已经和 Anubis 作者 Xe 私下详谈过,也在站内说过多次,但没有在本帖复述——这引来了 MallocVoidstar 和 rvz 的不满:”我翻了你的评论,全是说 Anubis 是糟糕的 CS,找不到一条说你想让它改成什么。”
“这些爬虫到底是谁?” ipdashc 觉得最令人着迷的是:这个现象大到影响整个互联网,却似乎没人知道究竟是谁在干。rcxdude 指出大玩家的爬虫都会自报身份且行为相对良好,这些不明爬虫唯一肯下功夫的地方就是规避封锁。TeMPOraL 提出了两个从未被证实却被当作信仰的假设:(1)是 SOTA 公司在干;(2)爬虫是为了训练数据。shakna 反驳并贴出 FT 报道称 Anthropic 已经承认过,inigyou 抠字眼说那只是”被指控”,shakna 回应说报道里有 Anthropic 自己的引述承认在 robots.txt 更新后撤回了爬虫。marginalia_nu 提出了一个更结构性的解释:过去几年的机器人行为很可能是住宅代理生意繁荣的后果——这间接源于 AI 公司的爬取需求,但代理如此便宜易得,改变了所有使用者的激励,让请求行为变得鲁莽而不可持续,因为没有烧掉自己 IP 的风险,也几乎不会为实质上 DDoS 一个网站承担任何后果。ipdashc 还提出一个被低估的可能:很多流量可能不是训练数据爬取,而是工具调用型 LLM——你用 ChatGPT 的思考模式就能看到它以远超人类的速度访问一堆网站,这些加起来会很可观。tmp10423288442 补充说 OpenAI 为不同用途使用了不同的 bot 类型(GPTBot 训练、OAI-SearchBot 搜索索引、ChatGPT-User 用户发起的抓取、OAI-AdsBot 广告落地页)。
Cloudflare 是另一个争议点。 Demiurge 讲述了自己维护的一个老牌游戏网站的经历:在线用户计数器从 100–200 涨到数千,调查后发现绝大部分是爬虫会话,它们”试图点击每一个按钮”,而排序和搜索恰好是用 GET 链接实现的。他认为 Cloudflare 的按次向爬虫收费是个好主意,但遗憾的是需要一个中间人。iririririr 强烈反对:”别上 Cloudflare 的营销当,他们的机器人检测是业内最差的之一,但因为所有人都用他们,巨大的误报率不会显示在任何地方。”1oooqooq 说得更狠:Cloudflare 实际做的只是拦截所有屏蔽广告追踪和画像技术(如 canvas 指纹)的人,”Cloudflare 拦不住机器人,它拦的是人类”——只要机器人付得起无头 Chrome 那点税,请求照样通行。inigyou 从三方经历(用过住宅代理、被雇运营过代理、试图拦截过代理)证实了这点:用住宅代理配上最蠢的 curl 命令也能爬任何东西,被 Cloudflare 拦下的概率大概只有 15%,”比我用隐私浏览器从非代理地址访问被拦的频率还低”。当 roughly 惊讶地问”你同时当过三方,兄弟你这是在过什么样的人生”,inigyou 回答:”欢迎来到资本主义。欢迎来到博弈论。欢迎来到竞争。欢迎来到真实世界。欢迎来到成年人的生活。”
关于”AI 这么聪明,爬虫怎么这么蠢”的元讨论。 kalkin 表示这个梗在他读过的几乎所有反 AI 爬虫的抱怨里都出现,让他觉得挺烦:爬虫可能是用 AI 写的,但显然没有对抓回的页面跑 AI 推理——如果这是预训练输入,那规模巨大,意味着推理成本大幅增加,”这把一个非常正当的抱怨(行为恶劣的爬虫)默默变成了 AI 否认主义的理由”。bigstrat2003 反驳说”承认这些被错误标为 AI 的系统极度愚蠢没有任何’否认’成分”。kalkin 引用牛津数学家 James Maynard 对 AI 数学成果的评价反驳”零智能”的说法。DarmokTanagra 给出了一个最简洁的解释:”大多数爬虫本身就是 AI 生成的,而 AI 生成的代码是垃圾。消息来源:一个每天审 AI 生成 PR 的人。”
“这不只是 git” 也被多人证实。delichon 说他们的 B2B 洗车网站遇到完全一样的问题。wiredfool 运营的开放数据站点上,爬虫会陷入循环,把数据集列表页的每一种 facet 组合都请求一遍,速度快到极限;有个机器人对某一个组织特别感兴趣,以 1000 请求/分钟的速度持续了 24 小时以上,User-Agent 和 sec-* 头都很逼真,任何 IP 在 10 分钟内都不会出现超过几次,唯一的共同点是路由。edent 提出了一个和 git clone 完全平行的疑问:WordPress 驱动了海量网站,每个都有更高效、更结构化的 JSON API,”如果这些爬虫这么聪明,为什么不跟随专门为它们提供的 rel=’alternate’?”
解决方向的讨论。 rwmj 认为这是社会问题,技术方案解决不了,需要法律介入:在别人的电视上装恶意软件劫持其网络连接本身就该是违法的,量刑应当等同于盗用服务,包括监禁。inigyou 一再主张这已经是重罪,只需取样一批爬取记录交给懂 DDoS 的警方,传唤涉事 ISP 追查即可;zbentley 讥讽地把这拆成”四个阶段,每一个对高度组织化的国际联盟来说历史上都近乎不可能”。acedTrex 给出了一个多人认同的预判:很多系统最终不得不转向登录/可信 IP 模式,”当你 99% 的流量都是假的时,这样运营下去就是不可行”。AshamedCaptain 和 rwmj 都表示已经或不得不下线自己的 cgit 实例。