AI爬虫:Linux内核开发者的‘数字背景辐射’
为什么 git.kernel.org 对爬虫很有吸引力
Linux 开发是开源的——从可克隆的 git 仓库到可实时关注的讨论归档。对大语言模型而言,这是宝贵的学习数据宝库,因为所有内容不仅立即可得,而且易于过滤,能保证是纯粹的、未受 AI 污染的预训练内容。在由 LLM 生成的内容上训练 LLM,无异于让模型患上“数字朊病毒”。因此,像内核提交历史这样保证不含 LLM 生成内容的源数据,其价值千金。最愚蠢的做法
我们几乎把所有内容都设为可克隆,因为嘿——我们可能不会永远存在,所以来吧,克隆仓库。同时也克隆归档。获取一份副本,好让我们不是唯一拥有全部数据的人。说真的,只要一个“git clone”就能搞定——然后你就能拥有完整的历史。 例如,你知道你可以克隆整个 LKML 并随意处理吗?一路都是 git 仓库。 所以,你会认为自称“人工智能”的东西会采用最高效的方式来抓取数据用于训练,对吧?克隆仓库,遍历每个提交。搞定。 但并没有,我们偏偏选择最愚蠢的方式——将所有内容逐个提交渲染成 HTML,然后再进行解析。
截至目前,linux.git 已有约 148 万次提交。此外,git.kernel.org 上还有约 922 个分叉版本——不过别担心,后端其实非常高效,因为每个分叉里的对象基本都一样。
除非你是爬虫,否则你根本不会在意。但爬虫们显然很在意:他们手里握着数十亿个有效 URL,结果抓下来的全是那 148 万次提交的 922 个重复副本,而这正是他们正在做的事。
但等等,这还不止是提交。你还可以请求补丁、纯渲染图、任意两次提交之间的差异——cgit 乐意照办。这在互联网主要服务于人类或遵守 robots.txt 的爬虫的时代很完美,但现在简直 糟糕透顶,因为我们光是一个 linux.git 的分叉就能生成 1.2 兆亿 个有效 URL。
封禁它们
最初,这是解决方案——查看日志,找出明显的爬虫 IP,然后用 fail2ban 封禁。起初这很简单,因为爬虫会通过 User-Agent 告诉你它们是谁。后来,它们变聪明了,开始伪装成随机的普通浏览器。
于是,我们开始按 IP 封禁——毕竟,一个试图抓取一个 8 年前废弃分叉里所有可能提交的 IP,绝对 不是 一个在 Windows 上使用 Chrome 的孤独用户,只是疯狂点击屏幕上出现的每一个链接。
接着,这些爬虫开始扩散到整个子网,但这依然不算什么,因为显然来自 Google Compute 的 IP 只是在 假装 Firefox 用户。封禁整个 ASN 是合理的,即使偶尔会误封一些试图自动化检查提交链接的合法实例。
登场……你的电视?
然后,事情变得真的、真的 丑陋了。突然间,爬虫开始从数百万个随机的住宅或移动 IP 出现,全都伪装成随机的现代浏览器。像这样的 IP 会发出 4-5 个请求,然后就再也不会出现在日志里了。封禁它们毫无意义,因为等你发现它们是爬虫时,它们已经搞完走了。你只是徒劳地膨胀了防火墙规则集,添加了一些永远不会再回来的 IP。
它们像蝗虫群一样蜂拥而至,攻势迅猛,直到系统崩溃,然后转向下一个目标,直到你恢复。接着,它们又回来了。如此循环往复。 它们至今仍在这样做——欢迎来到“代理 SDK 变现”的奇妙世界。这是一门大生意,你的电视很可能正在这样做。让它们付出代价
大约一年前,当这个问题首次出现时,我们天真地以为有办法阻止它。只要让机器人执行一项任务,通过做一些无用的数学运算来彻底颠覆整个经济模型。比如,计算出一个字符串,将其与它们的 IP 地址和我们提供的密钥组合后,生成一个前四位是零的 sha256 哈希值。 换句话说,我们在所有流量前面部署了 Anubis。
现状

情况有多严重?

目前我们还没被彻底压垮——如果你访问 git.kernel.org,网站依然会大概率保持流畅响应。通常让我们宕机的不是爬虫机器人,而是设计糟糕的 CI 系统,它们试图在 20 个节点上同时对 stable.git 进行浅克隆等愚蠢操作。(浅克隆很糟糕。如果非要干这种恶心事,就自己跑个镜像吧。)
不过你应该知道,在 5 个地理分布节点共 90 个核心中,有 14-16 个核心始终在专门为爬虫渲染提交。平均来看,这占用了我们 20% 的总算力——但爬虫大军是成群结队地袭来的,实际图表的波动远比一条 20% 的平缓曲线要剧烈得多。
我们该怎么办?
尚不明朗。也许 AI 泡沫破裂,试图训练模型的实体会大幅减少。或者,它们会变得聪明点,停止用最愚蠢的方式消耗我们的数据。
就目前的应对措施而言,我们正在关闭功能以减少可爬取的 URL 数量,并对对我们来说昂贵的操作进行限制。匿名访问我们的资源时,预计会失去部分功能。相信我,我们也和你一样讨厌这样做,但现阶段这是必要的。
最糟糕的是,这个问题没有简单的解决方案。提供定制“AI”模型的公司依然层出不穷,它们都急需训练数据。应用开发者仍在寻找盈利途径,所以他们会继续把你的家用电器变成攻击向量。
话虽如此,我们承诺仍会向任何索取的人提供所有数据的下载。只是你可能需要多费点周折才能拿到。
抱歉。(这是加拿大人必须说的一句客套话。)