CoreDash Bot:它们请求什么,如何识别

日志里的 CoreDash/1.0 来自 CoreDash 的两个 Bot 之一。它们只会打开 CoreDash 客户指定访问的页面。

谁在运行 CoreDash Bot,它们为何来访

简述

  • CoreDash 有两个 Bot:uptime 检查每 30 分钟请求一次页面;cRUM 审计则是单页面测速,当客户打开页面报告时,会在 Chrome 中加载一次。
  • 两者的 User Agent 均以 CoreDash/ 开头。它们的 IP 地址在 ips.json 中,CoreDash 客户还会在 header 中收到保密 token。
  • 若要放行,允许该 User Agent 即可。如果不想让它们访问,联系 CoreDash,访问就会停止。

CoreDash 是 Core Web Vitals 真实用户监控工具。网站所有者用它查看真实访客在移动端和桌面端的页面加载速度。CoreDash 位于荷兰贝尔亨奥普佐姆(Bergen op Zoom),自主运行这两个 Bot。

CoreDash Bot 只有在 CoreDash 客户明确要求时才会访问页面:要么是将页面添加到 uptime 监控中,要么是打开了该页面的审计报告。Bot 不会追踪任何链接,也绝不主动搜寻页面。抓取的任何内容都不会进入搜索索引,也不会用来训练 AI 模型。测试结果只提供给发起请求的客户,绝不给其他人。

CoreDash User Agent

CoreDash/1.0 (uptime; +https://www.coredash.app/bot)
CoreDash/1.0 (audit; +https://www.coredash.app/bot)

括号中的词标明了发送请求的是哪个 Bot,链接则指向当前页面。所有 CoreDash 工具发送的 User Agent 均以 CoreDash/ 开头,后续新增的工具也不例外。在日志搜索或防火墙规则中匹配 CoreDash/ 就能全部找到。不过任何人都可以发送该名称,因此还要对照 ips.json 核查请求来源的 IP 地址。

uptime 检查与 cRUM 审计

在服务器 access log 中,这两个 Bot 呈现为这样:整点和半点各一次 uptime 检查,外加一次加载了页面、CSS 和图片的审计。

Nginx access log of www.example-shop.com: CoreDash uptime checks at 13:00, 13:30 and 14:00 asking for the home page, and a CoreDash audit loading /checkout/ with its CSS and an image, between normal visitors

www.example-shop.com 的 access log。

uptime 检查

客户在 CoreDash 中将 URL 添加到 uptime 监控。此后,uptime 检查每 30 分钟请求一次该 URL:一台 CoreDash 服务器在整点请求,另一台在半点请求。这样每个监控项每天会产生 48 次检查。

每次检查都是一次获取 HTML 的 GET 请求;每有一次重定向就追加一次请求,最多连续 5 次。它最多读取响应内容的前 256 KB,不加载任何图片、脚本或 CSS。如果客户填写了源站服务器的 IP 地址,每次检查还会绕过 CDN 直接向该服务器发送请求,确认服务器本身是否响应。CoreDash 只保留状态码和耗时数据,不保存页面本身的任何内容。

cRUM 审计

cRUM 审计是 CoreDash 对单个页面的测速功能。当客户在 CoreDash 中打开该页面的报告时便会运行,重新测速或在手机与桌面端之间切换时也会再次运行。它没有预设的定时计划:只要没人打开某个页面的报告,该页面就永远不会收到审计请求。

审计会模拟手机或桌面端的首次访客,在禁用缓存的 Chrome 中加载一次页面。随后 Chrome 会像正常访客一样,抓取页面所需的所有资源,包括 CSS、脚本和图片。在日志中,你会看到页面 URL 带有 _cache_bust= 和时间戳的请求,紧随其后的是其资源文件的请求,且全部带有 audit User Agent。

页面从其他站点加载的文件(如网络字体或分析脚本),发出的请求同样会携带 audit User Agent。如果你托管了此类文件,即使不是你的页面,CoreDash 也可能会出现在你的日志中。这些请求都是客户所选页面完整加载流程的一部分。

如何确认请求来自 CoreDash

CoreDash 在 app.coredash.app/bot/ips.json 公布了 Bot 的出网 IP 地址。该 JSON 文件采用了 Google 爬虫 IP 列表的格式,每个地址都有一个 service 字段,标明 “uptime” 或 “audit”。如果带有 CoreDash User Agent 的请求来自该文件以外的地址,则该请求绝非来自 CoreDash。

这些地址可能会变动:CoreDash 会不定期增减或迁移服务器。请始终以当时的最新文件为准。列表每次变更,其 creationTime 都会更新。

CoreDash 客户还可以进行二次校验。每个项目都有专属的保密 bot token,两个 Bot 在访问项目自己的网站或子域名时,都会在 X-CoreDash-Bot header 中携带该 token。访问任何其他网站均不携带 token。该 token 可以在 CoreDash 的 Project settings 下的 “CoreDash bot token” 标签页中找到。

在防火墙中放行 CoreDash Bot

防火墙或 CDN 有时会将 CoreDash Bot 误判为不可信的 Bot 并直接拦截。要放行它们,可以放行 User Agent 以 CoreDash/ 开头的请求。如果该站点属于你自己的 CoreDash 项目,根据 bot token 配置规则更安全,因为只有你项目的请求才会携带它。仅在其他方式均不可行时才放行 IP 地址,并切记这些地址可能会变动。在 CDN 或防火墙中放行 CoreDash Bot 提供了 Cloudflare 和 AWS WAF 的具体配置步骤。

为什么 CoreDash Bot 不读取 robots.txt

robots.txt 的作用,是告诉爬虫在自主爬取网站时可以访问哪些页面。CoreDash Bot 从不这么做。它的每一次访问都由客户主动触发,就像有人运行测试时 Lighthouse 加载页面一样。正因如此,这两个 Bot 都不会读取 robots.txt,Disallow 规则也阻止不了它们。

禁止 CoreDash Bot 访问你的网站

如果你对这些 Bot 有疑问,或者不希望它们访问你的网站,可通过 联系页面 联系 CoreDash。提供该 URL 以及日志中包含 CoreDash 的一行记录。CoreDash 随后便会停止对你网站的访问。

CoreDash Bot:User Agent、IP 列表与它们请求什么 Core Web Vitals CoreDash Bot:User Agent、IP 列表与它们请求什么