衡量蜘蛛对新内容的发现速度,核心指标只有一个:**首次抓取延迟(Time to First Crawl,简称 TTFC)= 爬虫第一次访问该 URL 的时间 − 内容发布时间**,单位用分钟算。把每个爬虫分开统计这个值的中位数和 P90,就能一眼看出「发完文章几分钟被 Google 抓、几天才被百度抓」这类问题,而不是凭感觉说「收录慢」。
分析蜘蛛发现速度,该盯哪个指标?
结论:不要看「收录时间」,要看「首次抓取延迟」,因为收录还受内容质量和索引队列影响,抓取才是发现速度的纯粹度量。
具体统计口径建议这样定:
- 分母是「新发布的 URL 清单」,包含发布时间(精确到分钟);
- 分子是「各爬虫 UA 在该 URL 上的第一条访问记录」;
- 输出分爬虫的 P50 / P90 / 最大值,例如「Googlebot 中位数 12 分钟、Baiduspider 中位数 3 小时、P90 超过 48 小时」。
必须分爬虫统计:Googlebot、Baiduspider、bingbot、YisouSpider、Sogou web spider、360Spider、Bytespider 的抓取策略差异极大,合并统计得出的平均值没有参考价值。
怎么从 Nginx 日志里算出首次抓取延迟?
结论:先保证日志里有精确到秒的 $time_local 和完整 $http_user_agent,再用两条 grep + awk 就能算出单个 URL 的延迟。
标准 Nginx combined 格式已经够用:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent"';
取某个新文章被 Googlebot 首次访问的时间:
awk -F'[][]' '/[Gg]ooglebot/ && /\/post\/1234\.html/ {print $2; exit}' access.log
再和发布时间做差,换算成分钟:
T0=$(date -d "2024-10-10 13:40:00" +%s)
T1=$(date -d "$(awk -F'[][]' '/[Gg]ooglebot/ && /\/post\/1234\.html/ {print $2; exit}' access.log)" +%s)
echo $(( (T1 - T0) / 60 ))
两个注意点:一是发布时必须把时间戳落库或写入独立日志,否则事后无从对比,这是整个分析的前提;二是UA 可以伪造,统计前要用反向 DNS 验证 Googlebot(host 66.249.x.x 得到 googlebot.com 再 host 回去),Baiduspider 有官方公布的 IP 段列表可以直接比对。用了 CDN 的站点,要拿 CDN 的边缘日志,源站日志会缺失回源失败的抓取请求。
批量统计建议写个 Python 脚本:读入「URL + 发布时间」CSV,遍历日志文件提取每条 URL 的首个爬虫记录,直接输出分爬虫的分位数表格。
各搜索引擎的官方数据在哪里看?
结论:服务器日志是唯一覆盖全部爬虫的数据源,官方后台是交叉验证的补充。
- Google:Search Console 的「抓取统计信息」报表能看抓取请求总数、按响应、按抓取目的(发现 / 刷新)拆分;「网址检查」里输入新 URL,能看到最近一次抓取时间和抓取到的 HTML。
- 百度:搜索资源平台的「抓取诊断」可手动触发抓取并查看返回码,「抓取频次」看每日抓取量变化。
- Bing:Bing Webmaster Tools 的「URL 检查」和 IndexNow 提交记录。
这些后台都没有「首次抓取延迟」这个现成指标,必须自己用日志算。
怎么加快新内容的发现速度?
结论:把 URL 主动「推」给爬虫,比等它自己发现快得多,推送类通道通常把延迟压到分钟级。
- IndexNow:Bing、Yandex 支持,POST 到
https://api.indexnow.org/indexnow,body 为 {"host":"...","key":"...","keyLocation":"...","urlList":["..."]},官方称提交后抓取会在数分钟内触发。
- 百度普通收录 API 推送:有每日配额,建议把配额全部用在新发布的 URL 上,不要浪费在旧页面上。
- sitemap:新 URL 出现时同步更新 sitemap 并写准
<lastmod>。注意 Google 已于 2023 年 6 月停用 sitemap ping 端点,ping 已经无效。
- 内链:在首页或栏目页首屏给出新内容入口,链接深度从 4 层降到 2 层,这是最便宜也最有效的加速手段。
- 服务器响应:TTFB 控制在 200ms 内,抓取预算更愿意花在你的站点上。
怎么设计一次可对比的实验?
结论:每次只改一个变量,用 20-50 个新 URL 做样本,跑 7 天看 P90。
具体做法:第一天发布 30 篇不做任何主动推送的文章,记录 TTFC;第二天再发 30 篇、但同步走 IndexNow 和百度 API 推送。7 天后对比两组的分位数,差异就是推送通道带来的真实收益。样本量小于 20 个时,单篇爆款带来的外链会严重干扰结果,结论不可信。
总结一下:先给每篇新内容打上发布时间的戳,再从日志里筛出各爬虫对该 URL 的首次访问,做差得出 TTFC,然后按爬虫分开看中位数和 P90;日志是主数据源,Search Console 和搜索资源平台用于交叉验证;想提速就靠 IndexNow、收录 API、sitemap 和内链,并坚持单变量实验来验证效果。