开放的技术档案隐含着一项承诺:人可以核查项目背后的证据,机器也能获取信息,而不必为每一页单独申请许可。当客户端把面向人的界面当作没有上限的数据提取 API 时,这项承诺会变得脆弱。kernel.org 最近公开的测量结果值得所有维护公开代码、文档、数据库和问题追踪系统的人关注。问题不在于公开数据应该被锁起来,而在于客户端选择的表示方式决定了谁为开放性付费。
Kernel.org 描述了持续出现的一类流量:客户端不断请求渲染后的提交页面,而不是使用 Git 原生的传输机制。维护者报告称,大量不同 URL 会触发昂贵的 HTML 渲染。这些测量不能识别每一个客户端,也不能证明每一次请求都来自某一家 AI 公司;它们揭示的是更普遍的系统问题。有限的资料集合可以暴露出几乎无限的昂贵页面视图,代码浏览器、公共记录站点、文档系统和数据库查询界面都会遇到这种风险。
目标不应是给公共知识砌墙,而是让低成本、已获授权的路径足够清楚和好用,同时为昂贵路径设定预算,避免某个爬虫悄悄把共享档案变成自己的计算集群。
计算表示形式的成本,而不只计算请求数量
当两个 URL 的工作量完全不同,请求计数并不是好的容量模型。一次仓库克隆可能传输已经组织好的对象,客户端可在本地遍历;一次提交页面访问则可能要求服务器解析历史、调用渲染器、构建导航并生成新的 HTML。两者都是公开读取,却消耗不同的 CPU、缓存和运维注意力。
先建立路由清单。为每类公开路由记录它真正触发的工作:静态对象投递、缓存查询、数据库查询、仓库遍历、全文检索、差异生成还是服务器端渲染。再配上几个可行动的指标:中位和尾部延迟、可获得时的 CPU 时间、缓存命中率、每个客户端访问的不同 URL 数量,以及成功响应与实际有用工作的比例。这样就能识别出把流量分散到独特参数组合、而非复用一组有限文档的客户端。
不要把公开 URL 视为稳定的内容单位。一个代码浏览器可能用多个视图表示同一个提交;一个数据探索器可能产生无数排序、筛选和分页组合。即使它们映射到同一条底层记录,爬虫也会把它们看成不同目的地。在高频客户端率先发现之前,先找出这些等价类。
为批量使用者提供一等、低成本的路径
藏在页脚里的批量导出并不构成访问策略。如果档案拥有原生协议、快照、已文档化 API、RSS/Atom 订阅源或带签名的数据包,应说明它们回答什么问题、多久更新一次。把链接放在面向人的界面附近,并在合适的机器可读发现点返回它。期望的行为应当比逐页抓取更容易。
对于源码档案,这可以是克隆或抓取仓库,而不是遍历提交页;对于公共记录,这可以是按日期生成的导出加上增量变更源;对于文档,这可以是带稳定标识符的版本化包。这些格式也提升可复现性:研究者可以引用一个快照,AI 管道可以保留自己实际使用的输入。
替代接口同样必须有边界。公布页面大小、游标规则、字段限制和变更语义。一个允许任意连接、无上限搜索或访问全部历史版本的“高效接口”,只是在另一个 URL 后面搬运昂贵的渲染问题。确实需要高成本查询时,应把它做成有配额的显式任务、可缓存的产物,或需要人工审核的路径。
让人类页面保持有用,让机器工作受预算约束
人类可读页面仍然不可替代。它们支持检查、链接、无障碍访问和普通搜索;保护它们不等于让它们变得难用。应缓存稳定响应、规范化无害的 URL 变体、给分页设定合理上限,并避免无限生成筛选或比较组合。使用 canonical URL,让读者和爬虫汇聚到同一文档,而不是制造更多缓存键。
随后按成本设置限制。轻量静态页面的承受能力不同于按需生成的 diff 或搜索查询。对昂贵操作本身施加并发上限和超时,而不只限制外层 HTTP 请求。为已认证协作者、镜像和普通浏览保留容量,避免匿名突发工作耗尽全部 worker。返回缓存结果、Retry-After 信号或指向批量接口的链接,往往比让过载渲染器随机失败更好。
robots 规则可以传达偏好,但 RFC 9309 并未把它变成授权控制。应把它视为公开契约的一部分,并配合清晰的爬虫指南、速率限制和可观测性。合作型客户端应标明身份、提供稳定联系渠道、遵守公开限制并选择成本最低的表示方式。面对缺失或误导性身份的客户端,则需要仍然有效的技术控制。
检验防护是否保留了正常访问
挑战页或大范围 IP 封禁可以迅速压低曲线,也可能同时排除普通读者、辅助技术、镜像和合法自动化。评估防护时必须观察两类信号。第一类衡量滥用:昂贵路由访问量、独特路径的增长、渲染器饱和度和挑战完成率。第二类衡量附带伤害:普通访问失败、已知有用路由的延迟、支持请求以及获准批量客户端的使用体验。
这正是 kernel.org 的案例超出单一服务的意义。维护者能够区分为复制而设计的仓库协议,与反复渲染单页的访问。于是关于机器人的是非争论转变成了一个运维决策:哪种访问路径能保住共享容量,当客户端不走那条路径时又该约束什么?
每当接口发生重要变化,都重新审视答案。新的搜索功能、diff 视图或面向 AI 的端点,都可能创造新的高成本表面,即使旧档案保护得很好。维护一份小型运行手册,写清昂贵路由、首选机器接口、速率策略负责人,以及放宽限制前需要的证据。
开放档案不必在普遍访问和永久过载之间二选一。它需要明确的访问设计:让批量数据可携带,让人类页面可读,为计算密集型路由设定坚定预算,并在执行时持续衡量合法用户的体验。这样才能让档案继续服务于它原本希望帮助的人和工具。
我们会结合一手资料、产品文档与实际使用场景,帮助你更清楚地判断工具是否适合你的工作流。
