本文由 Vercel 官方博客发布,探讨了 AI 爬虫(如 OpenAI 的 ChatGPT 和 Anthropic 的 Claude)正在迅速成为网络上的重要角色,其爬取行为和传统搜索引擎(如 Googlebot)有显著差异。尽管 AI 爬虫流量规模尚未达到 Googlebot 的水平,但它们在 JavaScript 渲染能力、内容优先级和爬取效率等方面表现出独特模式。随着 AI 驱动的网络体验不断发展,网站所有者需要优化内容以适应这些爬虫的特点,同时确保关键信息可被有效抓取。
1. AI 爬虫的规模与分布
- 流量规模:过去一个月,GPTBot 和 Claude 的总请求量接近 1.3 亿次,占 Googlebot 请求量的 28%。其中:
- GPTBot:5.69 亿次
- Claude:3.7 亿次
- AppleBot 和 PerplexityBot 分别为 3.14 亿次和 2440 万次。
- 地理分布:AI 爬虫主要集中在美国数据中心(如 ChatGPT 在爱荷华州和亚利桑那州,Claude 在俄亥俄州),而 Googlebot 的爬取分布更广泛。
2. JavaScript 渲染能力
- AI 爬虫的局限性:包括 ChatGPT、Claude、Meta 和 Perplexity 在内的主要 AI 爬虫均无法执行 JavaScript,只能抓取静态 HTML 和初始 HTML 响应中的内容。
- 对比 Googlebot:Googlebot 和 AppleBot 可完整渲染 JavaScript,处理现代 Web 应用的动态内容。
- 抓取行为:尽管 ChatGPT 和 Claude 会抓取 JavaScript 文件(分别占请求的 11.50% 和 23.84%),但它们无法执行这些文件,也无法读取客户端渲染的内容。
3. 内容优先级
- 抓取偏好:
- ChatGPT 更倾向于抓取 HTML 内容(57.70%)。
- Claude 更关注图片(35.17%)。
- 两者均会抓取 JavaScript 文件,但无法处理其动态内容。
- 对比 Googlebot:Googlebot 的抓取分布更均衡,包括 HTML(31%)、JSON 数据(29.34%)、纯文本(20.77%)和 JavaScript(15.25%)。
4. 爬取效率
- 高 404 错误率:
- ChatGPT 和 Claude 的请求中,分别有 34.82% 和 34.16% 访问了 404 页面。
- ChatGPT 额外有 14.36% 的请求用于处理重定向。
- 问题来源:这些爬虫常尝试访问过时的资源(如 /static/ 文件夹),显示其 URL 选择和处理策略需要改进。
- 对比 Googlebot:Googlebot 的 404 错误率仅为 8.22%,重定向率为 1.49%,表明其爬取策略更高效。
5. 对网站优化的建议
对希望被爬取的网站:
- 优先服务端渲染(SSR):确保关键内容(如文章、产品信息、导航结构)通过服务端渲染,避免因 JavaScript 无法执行而丢失。
- 高效 URL 管理:减少 404 错误,维护最新的 sitemap,并使用一致的 URL 结构。
- 客户端渲染的适用场景:非关键动态元素(如交互式 UI、社交媒体插件)可使用客户端渲染。
对不希望被爬取的网站:
- 使用 robots.txt:通过 robots.txt 文件限制 AI 爬虫访问敏感或非必要内容。
- 防火墙规则:利用工具(如 Vercel 的 Block AI Bots Firewall Rule)阻止 AI 爬虫访问。
6. 对 AI 用户的提醒
- 数据完整性:由于 AI 爬虫无法执行 JavaScript,其对动态 Web 应用的理解可能不完整或过时。
- URL 准确性:高 404 错误率(>34%)意味着 AI 提供的链接可能无效或不可访问。
- 数据更新延迟:除了 Google 的 Gemini,其他 AI 爬虫的数据更新模式较不规律,可能依赖缓存或训练数据,而非实时抓取。
7. 结论
AI 爬虫正在快速扩展,但其在 JavaScript 渲染、内容抓取优先级和爬取效率方面仍需改进。网站所有者应遵循最佳实践(如服务端渲染和高效 URL 管理)以适应这一趋势,并确保关键内容的可访问性,从而在 AI 驱动的搜索环境中保持竞争力。
AI 爬虫的兴起 - Vercel
来自 MERJ 和 Vercel 的真实数据显示,顶级的 AI 爬虫呈现出明显的模式。
AI 爬虫已成为网络上的重要组成部分。OpenAI 的 GPTBot 在过去一个月中在 Vercel 的网络上发起了 5.69 亿次请求,Anthropic 的 Claude 紧随其后,发起了 3.7 亿次请求。从角度来看,这个总量大约占同期 Googlebot 45 亿次请求的 20%。
在与 MERJ 一起分析 Googlebot 如何处理 JavaScript 渲染之后,我们将注意力转向了这些 AI 助手。新的数据显示了 OpenAI 的 ChatGPT、Anthropic 的 Claude 和其他 AI 工具如何爬取和处理网络内容。
我们发现了这些爬虫在处理 JavaScript、内容类型优先级以及浏览网络方面的明确模式,这直接影响了 AI 工具如何理解和与现代网络应用交互。
数据收集过程
主要数据来自对 nextjs.org
和 Vercel 网络在过去几个月的监控。为了验证在不同技术栈上的发现,我们还分析了两个招聘网站:使用 Next.js 构建的 Resume Library 和使用自定义单体框架的 CV Library。这种多样化的数据集有助于确保我们对爬虫行为的观察在不同的网络架构中保持一致。
有关如何收集此数据的更多细节,请参阅我们的第一篇文章。
注意:Microsoft Copilot 未纳入本次研究,因为它缺乏用于追踪的唯一用户代理。
规模和分布
AI 爬虫在 Vercel 网络上的流量十分巨大。在过去一个月中:
- Googlebot:在 Gemini 和搜索中发起了 45 亿次请求
- GPTBot (ChatGPT):发起了 5.69 亿次请求
- Claude:发起了 3.7 亿次请求
- AppleBot:发起了 3.14 亿次请求
- PerplexityBot:发起了 2440 万次请求
尽管 AI 爬虫尚未达到 Googlebot 的规模,但它们在网络爬虫流量中占据了重要份额。总的来说,GPTBot、Claude、AppleBot 和 PerplexityBot 加起来的请求量接近 13 亿次,略高于 Googlebot 请求量的 28%。
地理分布
我们所监测的所有 AI 爬虫都从美国的数据中心运行:
- ChatGPT:得梅因 (爱荷华州)、凤凰城 (亚利桑那州)
- Claude:哥伦布 (俄亥俄州)
相比之下,传统的搜索引擎通常将爬取分布在多个区域。例如,Googlebot 在美国七个不同的地点运行,包括达勒斯 (俄勒冈州)、康瑟尔布拉夫斯 (爱荷华州) 和芒克斯角 (南卡罗来纳州)。
JavaScript 渲染能力
分析显示,AI 爬虫之间的 JavaScript 渲染能力存在明显差异。为验证这一发现,我们分析了 Next.js 应用和使用不同技术栈的传统网络应用。
结果一致表明,目前没有主要的 AI 爬虫能够渲染 JavaScript。这包括:
- OpenAI (OAI-SearchBot, ChatGPT-User, GPTBot)
- Anthropic (ClaudeBot)
- Meta (Meta-ExternalAgent)
- ByteDance (Bytespider)
- Perplexity (PerplexityBot)
结果还显示:
- Google 的 Gemini 利用 Googlebot 的基础设施,实现了完整的 JavaScript 渲染。
- AppleBot 通过基于浏览器的爬虫渲染 JavaScript,类似于 Googlebot。它可以处理 JavaScript、CSS、Ajax 请求以及其他全页面渲染所需的资源。
- Common Crawl (CCBot) ,常被用作大语言模型 (Large Language Model) 的训练数据集,不渲染页面。
数据表明,虽然 ChatGPT 和 Claude 爬虫会 请求 JavaScript 文件 (ChatGPT:11.50%,Claude:23.84% 的请求),但它们不 执行 这些文件。它们无法读取客户端渲染的内容。
但请注意,初始 HTML 响应中包含的内容,如 JSON 数据或延迟的 React 服务端组件,仍然可以被索引,因为 AI 模型可以解析非 HTML 内容。
相比之下,Gemini 使用 Google 的基础设施,使其具备了与我们在 Googlebot 分析中记录的相同的渲染能力,从而能够完全处理现代网络应用。
内容类型优先级
AI 爬虫在 nextjs.org
上请求的内容类型方面表现出明显的偏好。最值得注意的模式:
- ChatGPT 优先请求 HTML 内容 (57.70% 的请求)
- Claude 重点关注图像 (占总请求量的 35.17%)
- 尽管不执行 JavaScript 文件,但两个爬虫都在 JavaScript 文件上花费了大量时间 (ChatGPT:11.50%,Claude:23.84%)
相比之下,Googlebot 的请求 (在 Gemini 和搜索中) 分布更为均匀:
- 31.00% HTML 内容
- 29.34% JSON 数据
- 20.77% 纯文本
- 15.25% JavaScript
这些模式表明,AI 爬虫收集多种内容类型——HTML、图像,甚至作为文本的 JavaScript 文件——可能是为了训练模型处理各种形式的网络内容。
虽然像 Google 这样的传统搜索引擎已经针对搜索索引优化了爬取模式,但新兴的 AI 公司可能仍在改进其内容优先级策略。
爬取效率
数据显示,AI 爬虫的行为存在明显的效率问题:
- ChatGPT 将 34.82% 的请求用于 404 页面
- Claude 也表现出类似的模式,34.16% 的请求命中 404 错误
- ChatGPT 还有 14.36% 的请求用于跟踪重定向
对 404 错误的分析表明,除了 robots.txt
之外,这些爬虫还经常尝试从 /static/
文件夹中请求过时的资源。这表明需要改进 URL 选择和处理策略,以避免不必要的请求。
这些较高的 404 率和重定向率与 Googlebot 形成鲜明对比,后者仅将 8.22% 的请求用于 404 错误,1.49% 用于重定向,这表明 Google 花费了更多时间优化其爬虫以定位有效资源。
流量相关性分析
对流量模式的分析揭示了爬虫行为与网站流量之间有趣的关联。基于来自 nextjs.org
的数据:
- 自然流量较高的页面会收到更频繁的爬虫访问
- AI 爬虫在 URL 选择方面显示出较少的预测模式
- 较高的 404 率表明 AI 爬虫可能需要改进其 URL 选择和验证过程,尽管确切原因尚不清楚
虽然传统的搜索引擎已经开发出复杂的优先级算法,但 AI 爬虫似乎仍在不断发展其网络内容发现方法。
我们与 Vercel 的研究表明,AI 爬虫虽然在迅速扩张,但在处理 JavaScript 和高效爬取内容方面仍面临重大挑战。随着 AI 驱动的网络体验的采用不断加速,各品牌必须确保关键信息在服务器端渲染,并保持网站优化,以便在日益多样化的搜索环境中保持可见性。
Ryan Siddle, MERJ 董事总经理
建议
对于希望被爬取的网站所有者
- 优先为关键内容进行服务器端渲染。 ChatGPT 和 Claude 不执行 JavaScript,因此任何重要内容都应在服务器端渲染。这包括主要内容 (文章、产品信息、文档)、元数据 (标题、描述、类别) 和导航结构。SSR、ISR 和 SSG 使您的内容对所有爬虫都可访问。
- 客户端渲染仍然适用于增强功能。 可以随意使用客户端渲染来处理非必要的动态元素,如浏览量计数器、交互式 UI 增强、实时聊天小部件和社交媒体源。
- 高效的 URL 管理比以往任何时候都更加重要。 AI 爬虫的高 404 率突显了维护适当的重定向、保持 sitemap 更新以及在整个站点中使用一致的 URL 模式的重要性。
对于不希望被爬取的网站所有者
- 使用
robots.txt
控制爬虫访问。robots.txt
文件对所有被监测的爬虫都有效。通过指定用户代理或产品 Token 为 AI 爬虫设置具体规则,限制其对敏感或非必要内容的访问。要找到需要禁止的用户代理,您需要查阅每家公司自己的文档 (例如,Applebot 和 OpenAI 的爬虫)。 - 使用 Vercel 的 WAF 阻止 AI 爬虫。 我们的阻止 AI 机器人防火墙规则可让您一键阻止 AI 爬虫。此规则会自动配置您的防火墙以拒绝它们的访问。
对于 AI 用户
- JavaScript 渲染的内容可能会缺失。 由于 ChatGPT 和 Claude 不执行 JavaScript,它们对动态网络应用的响应可能不完整或过时。
- 考虑来源。 高 404 率 (>34%) 意味着,当 AI 工具引用特定网页时,这些 URL 有很大可能是错误的或无法访问的。对于关键信息,请始终直接验证来源,而不是依赖 AI 提供的链接。
- 期望不一致的新鲜度。 尽管 Gemini 利用 Google 的基础设施进行爬取,其他 AI 助手则显示出较少的预测模式。有些可能会引用较旧的缓存数据。
有趣的是,即使在向 Claude 或 ChatGPT 询问最新的 Next.js 文档数据时,我们通常也不会在 nextjs.org
的服务器日志中看到立即的请求。这表明 AI 模型可能依赖于缓存数据或训练数据,即使它们声称已经获取了最新信息。
最后的想法
分析表明,AI 爬虫已迅速成为网络上的重要存在,每月在 Vercel 网络上的请求量接近 10 亿次。
然而,在渲染能力、内容优先级和效率方面,它们的行为与传统搜索引擎明显不同。遵循已建立的网络开发最佳实践——尤其是在内容无障碍方面——仍然至关重要。