二十年来,爬虫的身份一直是一种声称。你在请求头里写上 User-Agent: Googlebot ,由服务器决定信不信。因为任何人都能往那里写任何内容,运营方学会了用旁证来核对这个声称:对发起连接的 IP 做反向 DNS 查询是否落在正确的域名上,这个域名是否又解析回同一个地址,这个 IP 是否落在已公布的网段里。
整个「谁有资格爬取」的经济就架在这道核对之上。它也是机器人检测走向 指纹识别、行为评分和 验证挑战页的原因,因为旁证的可靠程度,恰好等于攻击者愿不愿意去租一个合适的地址。
2026 年,这一切正在被取代。取代它的不是更好的指纹识别,而是非对称密码学:爬虫用私钥签名自己的请求,把公钥那一半发布在一个 well-known URL 上,服务器于是去验证一个签名,而不是去掂量一条线索。声称变成了证明。
有意思的不是密码学,那部分很平常。有意思的是它上线那天发生的事。
- Web Bot Auth 用 Ed25519 签名请求,并把验证公钥发布在一个 well-known 的 JWKS 目录里,于是身份是被验证的,而不是被推断的。
- Cloudflare 在 2025 年 7 月 1 日把它并入 Verified Bots 计划,就在同一天,它开始默认拦截 AI 爬虫,并开放了 pay per crawl 的测试。
- 身份变得可证明,许可变得可售卖,发生在同一天。这不是巧合,这正是重点。
- 截至 2026 年 8 月 18 日,该协议仍是一份个人 Internet-Draft,尚未被工作组采纳,而守门人已经在生产环境中验证它。
- 访问正在分裂成签名通道和未签名通道,而再多的指纹功夫也换不来一把密钥。
这套机制到底是什么
Web Bot Auth 是架在 RFC 9421之上的一层薄封装,也就是 HTTP Message Signatures 标准。机器人持有一对 Ed25519 密钥。每个请求携带三个头: Signature-Input 描述签名覆盖了什么, Signature 承载签名字节,而 Signature-Agent 指向公钥所在的 HTTPS 位置。
签名覆盖的是请求的组成部分,而不是整个 body。草案要求签名方至少包含 @authority 或 @target-uri,因此被截获的签名无法重放到另一个主机或路径上。
GET /article/12345 HTTP/1.1 Host: example.com Signature-Agent: "https://crawler.example/.well-known/http-message-signatures-directory" Signature-Input: sig=("@authority" "signature-agent"); created=1740000000; expires=1740086400; keyid="poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U"; tag="web-bot-auth" Signature: sig=:TUAfxGCoruBcOaEBRTdd6DcH0GJPd1v/1Vg1nCLmYFI=:
这段里有四个细节承载了整个设计。
字段 keyid 不是一个名字,而是一枚指纹。 它是 JSON Web Key 的 SHA-256 指纹,以 base64url 编码。你无法冒用别人的标识符,因为标识符是从你必须证明自己持有的那把密钥推导出来的。
字段 tag 的值是 web-bot-auth. 签名被限定了用途,因此为某个协议签发的签名,无法挪用来满足另一个验证方。
有效期很短。 草案建议不超过 24 小时,这就限定了一个被截获的签名还能值多久。
目录是可发现的。 公钥以 JWKS 形式发布在 /.well-known/http-message-signatures-directory,于是验证方可以拉取并缓存它们,完全不需要事先与该爬虫有任何关系。
身份与许可一同落地的那一天
2025 年 7 月 1 日,Cloudflare 把 message signatures 并入了 Verified Bots 计划,发布了 Rust 和 TypeScript 的库,并告诉运营方:签名格式规范的申请会更快获批。
就在同一天,它开始对新域名 默认拦截 AI 爬虫 ,并开放了 pay per crawl 的私有测试:由出版方定价,爬虫要么付钱,要么拿不到页面。Cloudflare 挡在大约五分之一的网络前面,所以那里的默认值已经接近规则。
把这两则公告当成一件事来读,形状就很清楚了。为访问收费,前提是知道来问的是谁;而知道来问的是谁,前提是一个无法伪造的身份。pay per crawl 在 User-Agent之上是不可能的。它在身份变成签名的那一刻才成为可能。
先上线,后标准化
这里值得停一停。协议草案 draft-meunier-webbotauth-httpsig-protocol-02的日期是 2026 年 8 月 18 日,并且仍然是一份 个人 Internet-Draft。它未被工作组采纳,并带着草案惯有的声明:这是一份仍在进行中的工作。
Cloudflare 自己的文档对此很坦白:它说该实现依赖 IETF 草案,并点名了它所跟随的具体草案版本。与此同时验证已在生产环境运行,同一套机制也正被其他大型运营方检查。
这个先后顺序在网络上并不罕见,也算不上丑闻。但它确实有需要提前规划的后果。一份边实现边变动的规范,意味着细节也在动:请求头的形态、目录路径和 tag 取值,都已经在不同草案修订之间变过。基于它构建,等于在追一个移动目标,而维护这个目标的主要是从结果中获益最多的那些方。
如果你在爬取,这改变了什么
军备竞赛多了一条通道,而不是被取代
签名代理并没有让指纹识别消失。 我们那篇反爬机制拆解里描述的机器 一样都在:TLS 指纹、请求头顺序和行为评分照常运行,并且仍然决定未签名流量的去向。变化在于,一个已签名、已注册的代理可以跳过其中大部分,因为「它是不是它自称的那个」这个昂贵问题,已经被便宜地回答了。
于是族群分裂。签名代理走上快车道。其余所有人撞上和以前一样不断升级的墙,只是运营方花在区分它们彼此上的注意力更少了。
身份不等于授权
一个通过验证的签名证明的是谁在请求。它完全没有说这个页面该不该给。这是两个分开的决定,把二者混为一谈是对这项技术最常见的误读。出版方可以完美验证你的身份,然后照样拒绝你、向你收费,或者只给你一个精简版本。Web Bot Auth 让拒绝变得精确,而不再是概率性的。
一把密钥就是一条白名单记录,而白名单是有主人的
在实践中,通过验证意味着被某个守门人认可,而运营这些计划的,正是 那些早已在决定什么能到达源站的人。注册路径要走运营方的计划,批准与否由他们说了算。这实实在在地改变了「谁来决定哪些自动化流量算合法」,把这个决定从内容所属的出版方那里推远,推向挡在它前面的基础设施。
它不证明意图,不证明对许可协议的尊重,也不证明良好行为。它不会让一个爬虫变得礼貌,也不会确立任何访问权利。它证明的是:某个特定私钥的持有者,在某个截止时间之前发出了某个特定请求。行业关心的其他所有问题,仍然要在政策、合同和法庭上争论,而签名只是让人清楚这场争论的对手是谁。
未来几年的务实位置
如果你运营的是一个有公开身份要维护的大型具名爬虫,那么去签名既直接又值得:生成密钥、发布目录、到对你的目标站点重要的那些计划里注册。
如果你只是在以寻常规模采集公开数据,而且不是什么家喻户晓的名字,那么诚实的读法是:签名通道实际上并不向你开放,而未签名通道正在变窄。夹在这两个事实之间,可靠拿到一个页面的成本,正不断从客户端的聪明功夫,转移到已经把访问问题解决掉的基础设施上。
把访问当成已解决的问题,而不是一个研究项目:轮换住宅 IP、真实浏览器渲染,以及在抓取内部完成的验证挑战处理,最后返回一个干净的响应。失败的请求不计费,所以一个正在收紧的目标花掉的是你的延迟,而不是账单。用 1,000 个免费请求开始,无需信用卡。
结语
网络正在长出一层面向自动化流量的身份层,而它的到来方式很寻常:一份草案、一家厂商的实现,以及一个需要它的商业模式。密码学本身平平无奇,后果并不。
二十年来,边缘上的问题是「这看起来像机器人吗?」。它正在变成「这个机器人是不是它自称的那个,我们之间有没有约定?」。这是一个更好的问题,也是诚实提出的问题。它同时也是一个只有当你已经是「某个人」时才有好答案的问题,而这正是行业还没有吵完的部分。
去盯草案,而不是盯报道。当它被某个工作组采纳、当第二家独立验证方上线、当第一家出版方定出一个爬虫真的愿意支付的价格时,未来几年的形状就会在这三件事里显现出来。
常见问题
Web Bot Auth 已经是获批的互联网标准了吗?
还不是。截至 2026 年 8 月 18 日,协议文档是 draft-meunier-webbotauth-httpsig-protocol-02,一份个人 Internet-Draft,而非工作组采纳的文档,而 Internet-Draft 明确属于进行中的工作。它所依赖的底层签名格式 RFC 9421 是已发布的标准。而上面那一层,也就是规定机器人该签什么、验证方如何发现公钥的部分,仍在变动。
这和检查反向 DNS 有什么不同?
反向 DNS 验证问的是,发起连接的地址是否属于爬虫自称的那个组织。这是从网络归属做出的推断,所以地址一旦被租用、委派或重新分配就会失效,而且它无法跨网络迁移。签名则是关于请求本身的证据:只有私钥的持有者才可能产生它,从任何地址都可以。
签名能让爬虫绕过反爬系统吗?
只在一种意义上可以:它回答了那些系统本来只能靠猜的问题。一个通过验证的代理,依然要面对运营方的策略,而策略可以是放行、限速、收费或拒绝。签名消除的是身份上的模糊,而不是运营方说不的权利。
签名会被重放吗?
如果构造正确,重放没有用处。签名方必须覆盖 @authority 或 @target-uri,因此被截获的签名无法转移到另一个主机;草案还建议有效期不超过 24 小时,这就限定了重放还值得一试的窗口。
没有签名的爬虫会怎样?
和今天一样,只是耐心更少。未签名流量继续遭遇指纹识别、行为评分和验证挑战;而随着越来越多合法的自动化流量转入签名通道,剩下的未签名族群在判定系统眼里会显得更加整齐划一地可疑。
现在就该实现它吗?
如果你运营的具名爬虫把身份当作产品的一部分,那么该做:机制无非是一对密钥加一份 JSON 文档,早做成本很低。如果你只是以寻常规模消费公开数据,单独实现客户端一侧并不会带来什么,因为价值在于被某个计划认可,而不在于产出一个有效签名。跟住草案,看哪些验证方真的上线。
大规模爬取任何站点,无需与基础设施对抗。
Crawlbase 负责处理代理、指纹和 CAPTCHA,让你的团队专注于交付数据流水线,而非维护爬取管道。1,000 次请求免费,无需信用卡。
