Linux内核官网遭爬虫围攻:98%流量疑似恶意抓取
Linux内核官方站点日均600万次请求,98%疑似爬虫流量。维护者称,大量爬虫逐页解析HTML而非直接克隆仓库,严重占用服务器资源。为应对挑战,站点引入工作量证明机制,但仍难以根除问题。
Linux内核官网遭爬虫围攻:98%流量疑似恶意抓取
开源项目的繁荣往往伴随着巨大的流量压力。近日,Linux 内核项目的核心代码托管站点 git.kernel.org 面临着一场前所未有的“自动化流量风暴”。根据科技媒体 Linuxiac 的最新报告,该站点的维护团队已发出警告:目前约 98% 的访问流量可能来自恶意爬虫程序,这给服务器资源带来了沉重的负担。
600万次请求背后的资源黑洞
据维护方透露,git.kernel.org 每天平均要处理约 600 万次随机的提交页面访问请求。为了支撑如此庞大的访问量,Kernel.org 在全球部署了 5 个分布式节点,总计配置了 90 个 CPU 核心。
然而,在这些核心资源中,有 14 至 16 个核心始终处于高负荷运转状态,专门用于将底层的 Git 提交数据实时渲染为人类可读的 HTML 网页。这意味着,爬虫相关的渲染工作实际上占据了服务器总计算能力的约 20%。尽管后端通过复用 Git 对象来优化性能,但网页端的复杂链接结构依然让服务器不堪重负。
数十亿级URL引发的雪崩效应
为何会有如此多的爬虫流量?这主要源于 Linux 主仓库(linux.git)惊人的体量。目前该仓库拥有约 148 万次提交,且托管了 922 个分叉仓库。
每个分叉仓库都会衍生出海量的 URL(统一资源定位符)。当这些分叉仓库叠加后,潜在的可抓取地址数量达到了 数十亿级别。除了提交页面,站点还提供补丁、纯文本版本及提交差异对比等功能,这些页面同样成为了爬虫的目标。许多爬虫程序并非高效地批量下载代码,而是试图像普通用户一样逐页浏览,这直接导致了服务器响应的延迟。
猫鼠游戏:从IP封禁到工作量证明
面对日益猖獗的爬虫,维护团队采取了一系列防御措施,但效果参差不齐。
- 早期防御: 项目初期主要依靠识别 User-Agent(用户代理)以及封禁可疑 IP 和网络段。
- 技术对抗: 随后,爬虫进化为伪装成普通浏览器,并利用住宅和移动代理网络分散流量。这种分布式攻击使得维护方难以通过单纯封禁 IP 来遏制流量,因为许多代理 IP 仅发送 4 至 5 次请求便失效消失。
- Anubis 机制: 为了更有效地筛选流量,Kernel.org 部署了名为 Anubis 的验证系统。该系统要求访问者完成 SHA-256 相关的工作量证明(Proof of Work)。这一机制成功拦截了约 66% 的恶意请求,但仍有约 33% 的请求能够通过计算挑战并抵达主站。
实用解读:开发者应如何应对?
对于广大开发者和研究人员而言,这一现状提供了一个重要的技术启示:直接使用 Git 协议进行操作,远比通过 HTTP 浏览网页高效得多。
爬虫之所以消耗大量资源,是因为它们试图通过 HTTP 请求获取网页内容。对于开发者来说,获取 Linux 内核代码的最佳方式是使用 git clone 或 git fetch 命令。这不仅避免了繁琐的 HTML 解析,还能直接获取二进制数据,大幅节省带宽和计算资源。如果所有访问者都能遵循这一最佳实践,Server 的负载将显著下降,从而保障真正需要访问该站点的用户和合法开发者的体验。
结语
在合法请求仅占约 2% 的背景下,git.kernel.org 正面临着严峻的可用性挑战。尽管引入工作量证明机制在一定程度上遏制了流量,但维护方仍需警惕这些“Creepy crawlies”对开源基础设施的侵蚀。