← 文章 / AI技术
Hacker News 7小时前 · 2026-08-31 02:10:40 · 3 阅读

AI爬虫:Linux内核开发者的‘数字背景辐射’

你大概听过我抱怨过“AI 爬虫”,但现在我有了一些确凿的数据,足以证明它们的影响。简而言之,它们造成的系统负载就像持续的“背景辐射”,长期占用了一部分本该用于生成输出的算力,而这些输出仅服务于单一目的——喂养学习模型。 TL;DR:我们消耗在渲染爬虫抓取请求上的 CPU 周期,超过了所有其他合法访问(包括 git clone)的总和。在 5 个地理分布节点上,任何时候都有 14 个 CPU 核心在专门用于将 git 提交渲染成 HTML。 CPU background radiation

为什么 git.kernel.org 对爬虫很有吸引力

Linux 开发是开源的——从可克隆的 git 仓库到可实时关注的讨论归档。对大语言模型而言,这是宝贵的学习数据宝库,因为所有内容不仅立即可得,而且易于过滤,能保证是纯粹的、未受 AI 污染的预训练内容。在由 LLM 生成的内容上训练 LLM,无异于让模型患上“数字朊病毒”。因此,像内核提交历史这样保证不含 LLM 生成内容的源数据,其价值千金。

最愚蠢的做法

我们几乎把所有内容都设为可克隆,因为嘿——我们可能不会永远存在,所以来吧,克隆仓库。同时也克隆归档。获取一份副本,好让我们不是唯一拥有全部数据的人。说真的,只要一个“git clone”就能搞定——然后你就能拥有完整的历史。 例如,你知道你可以克隆整个 LKML 并随意处理吗?一路都是 git 仓库。 所以,你会认为自称“人工智能”的东西会采用最高效的方式来抓取数据用于训练,对吧?克隆仓库,遍历每个提交。搞定。 但并没有,我们偏偏选择最愚蠢的方式——将所有内容逐个提交渲染成 HTML,然后再进行解析。 The stupidest way of doing it 截至目前,linux.git 已有约 148 万次提交。此外,git.kernel.org 上还有约 922 个分叉版本——不过别担心,后端其实非常高效,因为每个分叉里的对象基本都一样。 除非你是爬虫,否则你根本不会在意。但爬虫们显然很在意:他们手里握着数十亿个有效 URL,结果抓下来的全是那 148 万次提交的 922 个重复副本,而这正是他们正在做的事。 但等等,这还不止是提交。你还可以请求补丁、纯渲染图、任意两次提交之间的差异——cgit 乐意照办。这在互联网主要服务于人类或遵守 robots.txt 的爬虫的时代很完美,但现在简直 糟糕透顶,因为我们光是一个 linux.git 的分叉就能生成 1.2 兆亿 个有效 URL。 How many valid URLs is linux.git?

封禁它们

最初,这是解决方案——查看日志,找出明显的爬虫 IP,然后用 fail2ban 封禁。起初这很简单,因为爬虫会通过 User-Agent 告诉你它们是谁。后来,它们变聪明了,开始伪装成随机的普通浏览器。

于是,我们开始按 IP 封禁——毕竟,一个试图抓取一个 8 年前废弃分叉里所有可能提交的 IP,绝对 不是 一个在 Windows 上使用 Chrome 的孤独用户,只是疯狂点击屏幕上出现的每一个链接。

接着,这些爬虫开始扩散到整个子网,但这依然不算什么,因为显然来自 Google Compute 的 IP 只是在 假装 Firefox 用户。封禁整个 ASN 是合理的,即使偶尔会误封一些试图自动化检查提交链接的合法实例。

登场……你的电视?

然后,事情变得真的、真的 丑陋了。突然间,爬虫开始从数百万个随机的住宅或移动 IP 出现,全都伪装成随机的现代浏览器。像这样的 IP 会发出 4-5 个请求,然后就再也不会出现在日志里了。封禁它们毫无意义,因为等你发现它们是爬虫时,它们已经搞完走了。你只是徒劳地膨胀了防火墙规则集,添加了一些永远不会再回来的 IP。

它们像蝗虫群一样蜂拥而至,攻势迅猛,直到系统崩溃,然后转向下一个目标,直到你恢复。接着,它们又回来了。如此循环往复。 它们至今仍在这样做——欢迎来到“代理 SDK 变现”的奇妙世界。这是一门大生意,你的电视很可能正在这样做

让它们付出代价

大约一年前,当这个问题首次出现时,我们天真地以为有办法阻止它。只要让机器人执行一项任务,通过做一些无用的数学运算来彻底颠覆整个经济模型。比如,计算出一个字符串,将其与它们的 IP 地址和我们提供的密钥组合后,生成一个前四位是零的 sha256 哈希值。 换句话说,我们在所有流量前面部署了 Anubis

Anubis painfulness graph

起初效果立竿见影——机器人直接放弃了。那几个月简直是天堂:机器人被拦截在边缘,放弃攻击并转向更容易的目标;用户虽然 略感恼火 但还能忍受,而且 Anubis 技术栈部署起来也足够简单。 几个月后,机器人卷土重来,攻克了难度 4。没问题,我们说,把难度提高到 5。 现在,合法用户更加恼火了。在移动设备上解决难度 5 需要几秒钟,手机在计算时会变得很不舒服地热。不过,这很有效,又为我们争取了几个月的安宁。 然后……机器人开始攻克难度 5。

现状

Anatomy of git.kernel.org requests

如今,git.kernel.org 每天接收约 600 万次请求,要求查看随机的提交记录。其中,66% 依然被 Anubis 挑战直接拦截,但 33% 现在已经算出了数学题并成功进入主站——因为显然,我们提供的东西值得它们耗费大量算力来计算 Anubis 挑战。 无法确定这些请求中哪些是机器人,哪些是真人——但 chances are(很有可能),如果它是在一个随机的旧分支中请求查看旧提交,那它 大概 不是正在工作的真实开发者。 在做出一系列合理假设后,git.kernel.org 的合法请求仅占流量的约 2%,其余全是爬虫。

情况有多严重?

Hits vs. bytes

目前我们还没被彻底压垮——如果你访问 git.kernel.org,网站依然会大概率保持流畅响应。通常让我们宕机的不是爬虫机器人,而是设计糟糕的 CI 系统,它们试图在 20 个节点上同时对 stable.git 进行浅克隆等愚蠢操作。(浅克隆很糟糕。如果非要干这种恶心事,就自己跑个镜像吧。)

不过你应该知道,在 5 个地理分布节点共 90 个核心中,有 14-16 个核心始终在专门为爬虫渲染提交。平均来看,这占用了我们 20% 的总算力——但爬虫大军是成群结队地袭来的,实际图表的波动远比一条 20% 的平缓曲线要剧烈得多。

我们该怎么办?

尚不明朗。也许 AI 泡沫破裂,试图训练模型的实体会大幅减少。或者,它们会变得聪明点,停止用最愚蠢的方式消耗我们的数据。

就目前的应对措施而言,我们正在关闭功能以减少可爬取的 URL 数量,并对对我们来说昂贵的操作进行限制。匿名访问我们的资源时,预计会失去部分功能。相信我,我们也和你一样讨厌这样做,但现阶段这是必要的。

最糟糕的是,这个问题没有简单的解决方案。提供定制“AI”模型的公司依然层出不穷,它们都急需训练数据。应用开发者仍在寻找盈利途径,所以他们会继续把你的家用电器变成攻击向量。

话虽如此,我们承诺仍会向任何索取的人提供所有数据的下载。只是你可能需要多费点周折才能拿到。

抱歉。(这是加拿大人必须说的一句客套话。)

原始来源: Hacker News

评论 (0)