返回

文章详情

令人毛骨悚然的小虫子

Hacker News2026年8月29日 17:49

你可能听过我抱怨过'AI爬虫',但现在我有一些确凿的数据来展示它们的影响。简单来说,这个问题严重到导致系统负载的'背景辐射',不断占用一部分生产输出的能力,而这些输出只对一个单一目的有用——为学习模型提供数据。简而言之:我们花费在为爬虫渲染提交的CPU周期比我们用于所有其他合法访问(包括git克隆)的花费还要多。在任何时候,在五个地理分布的节点上,有14个CPU核心仅在渲染git提交为HTML。为什么git.kernel.org对爬虫'有趣'?Linux开发是开放的——从你可以克隆的git仓库,到你可以实时关注的讨论档案。对于大型语言模型来说,这是一座学习数据的金矿,因为所有这些不仅立即可用,而且容易过滤,以确保纯净未经过AI处理的内容。在内容产生于LLM的情况下训练LLM,相当于让它得上数字朊病毒病,所以当一个源保证无LLM(例如整个内核提交历史记录)时,它的价值不亚于金子,作为训练数据的来源。最愚蠢的方式 我们几乎让所有东西都可以克隆,因为嘿——我们可能不会永远存在,所以来吧——克隆这些仓库。还有,克隆这些档案。抓一份副本,以便我们不是唯一拥有这些的。说真的,只需'git clone'一下——然后你就能拥有整个历史记录。例如,你知道你可以克隆整个LKML,并且然后随意使用它吗?这全都是git仓库。那么,你可能会认为,假装是'人工智能'的东西会以最有效的方式使用我们的数据进行训练,对吧?克隆仓库,遍历每次提交。完成。但不,我们实际上选择了一种最愚蠢的方式——逐次将所有内容渲染为HTML提交,然后解析它。在撰写时,linux.git大约有148万次提交。哦,我们在git.kernel.org上大约有922个分叉——但别担心,实际上在后台效率极高,因为每个分叉中的对象大多都是相同的。当然,除非你是爬虫,在这种情况下,你可以抓取,哦,数十亿个有效的URL,只获取922个相同的148万次提交——这正是爬虫在做的。然而等等,不仅仅是提交本身。你还可以请求补丁、普通渲染、任意提交之间的差异——cgit很乐意让你这样做,这在互联网专为人类或遵守robots.txt的爬虫的时代是完美的,而现在则糟糕透了,因为我们仅仅为linux.git的一个分叉就可以生成1.2枚公吨的有效URL。阻止它们 最初,这是一个解决方案——查看日志,找出哪些IP明显是爬虫机器人,然后用fail2ban将其禁止。起初这很简单,因为这些机器人通过它们的用户代理友好的告诉你它们是谁。然后,它们变聪明了,开始假装自己是随机的普通浏览器。因此,我们开始按IP封锁它们——毕竟,显而易见,一个试图抓取8年前被遗弃的linux的每一个可能提交的IP,真的不是什么孤独的Windows用户在疯狂点击他们屏幕上的每个链接。然后,机器人开始向整个子网扩散,但这仍然没什么好处,因为显然来自Google Compute的IP只是在假装是Firefox用户。禁止整个ASN是合理的,尽管这偶尔会误伤正在自动化检查提交链接的随机合法实例。出现...你的电视?然后,就在那时,事情变得真的很糟糕。突然间,爬虫来自数以百万计的随机住宅或移动IP,全部假装是随机的现代浏览器。这类IP会发出4-5个请求,然后在日志中再也不出现。禁止它们没有任何意义,因为在你发现它们是机器人的时候,它们已经完成了对你的抓取。你只是毫无必要地膨胀了你的防火墙规则集,添加的不再会回来的一些IP。它们如蝗虫般降临,猛烈击打,直到系统崩溃,然后转向下一个目标,直到你恢复。然后,它们又回来了。重复。同样的做法仍在继续——欢迎来到'代理SDK变现'的奇妙世界。这是一桩大生意,而你的电视可能正在做这件事。当这一问题首次出现,大约一年前,我们天真地认为有办法让它停止。只需让机器人执行一项任务,让整个经济颠倒,通过让它们耗费一些节省下来的时间去做无用的数学计算。比如,计算哪个字符串与它们自己的IP和我们提供的一个秘密结合时,会生成一个前导零为4的sha256和...

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡