站点启用Brotli压缩后,要确认主流AI爬虫是否支持解压,最直接的办法是查看爬虫官方文档中关于Accept-Encoding的说明,并通过模拟请求测试响应头。例如,Googlebot明确支持Brotli,而部分新兴AI爬虫可能仅支持gzip。你还可以在服务器日志中检查对应User-Agent的响应内容编码,确认是否成功解压。下面详细说明具体步骤和注意事项。

主流AI爬虫对Brotli的支持现状

目前主流搜索引擎爬虫基本都支持Brotli。Googlebot在2016年就开始支持,Bingbot也随后跟进。但一些较新的AI爬虫(如OpenAI的GPTBot、Anthropic的ClaudeBot等)可能默认只请求gzip或deflate。你需要查阅各爬虫的官方技术文档来确认。例如Google的开发者文档明确说明Googlebot接受Brotli,而OpenAI的爬虫文档则未明确列出Brotli,建议优先使用gzip作为回退。

核验动作:访问爬虫官方技术页面,搜索“Accept-Encoding”或“Compression”关键词。

通过服务器配置确认爬虫是否支持

服务器通常根据请求头中的Accept-Encoding字段决定是否返回Brotli格式。如果爬虫发送了“br”,则服务器会返回Brotli压缩的内容。你可以检查服务器日志或使用网络抓包工具查看爬虫请求头部。例如在Nginx中,可以配置日志格式记录$http_accept_encoding变量。

另外,注意有些CDN或反向代理可能对爬虫流量做特殊处理。如果爬虫不发送br字段,服务器不会返回Brotli响应,此时爬虫仍能正常抓取,但未享受到Brotli的压缩优势。

核验动作:在服务器上临时记录爬虫User-Agent对应的Accept-Encoding值,确认是否包含“br”。

具体测试方法:用curl模拟爬虫请求

你可以使用curl命令模拟特定AI爬虫的请求,并检查响应是否被Brotli压缩。例如,模拟Googlebot的请求:
curl -H "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -H "Accept-Encoding: gzip, deflate, br" -I https://你的域名
如果响应头中包含“Content-Encoding: br”,则说明支持。如果不加br,则可能返回gzip或原始内容。

还可以使用在线工具如“HTTP Compression Test”输入URL,选择模拟不同爬虫User-Agent,查看压缩格式。

核验动作:实际运行curl命令,对比加不加br的响应头变化。

如果爬虫不支持Brotli怎么办?降级方案

如果测试发现某些AI爬虫不发送br字段,那么服务器应该自动降级到gzip或返回未压缩内容。大多数Web服务器(如Nginx、Apache)默认会处理这种协商。但需注意:如果强制所有客户端只接受Brotli,不支持br的爬虫将无法解压,导致抓取错误。因此,服务器配置必须启用“brotli_static”或动态压缩时保留gzip作为备选。

例如Nginx中,可以同时配置gzip和brotli,并设置gzip的优先级:
gzip on;
brotli on;
这样当爬虫只支持gzip时,服务器会返回gzip压缩内容。

核验动作:在服务器配置中确认同时启用了两种压缩算法,并检查爬虫抓取日志是否有4xx错误。

监控与持续验证

AI爬虫的版本和功能会更新,建议定期检查。可以设置定期测试任务,监控关键爬虫的Accept-Encoding是否变化。另外,使用Google Search Console的“抓取统计”功能查看Googlebot的抓取状态,如果出现大量“已抓取但未索引”且内容为Brotli编码,可能需要调整。

对于新出现的AI爬虫,可以通过服务器日志发现其User-Agent,然后手动测试。保持关注官方公告和技术社区动态。

核验动作:每月运行一次模拟测试脚本,并记录结果。