先把当时的情况摆出来。证书到期当天没续,页面能通过 http 访问,canonical 却指向 https,蜘蛛抓取时直接报证书错误,抓取量连续几天为零。

原因不止一个,得分开看。证书过期后 https 握手失败,抓取被中断。还有一种是canonical 与 sitemap 都指向 https。

少数情况下是http 版本没有配置跳转或跳转后仍失败。

动手时先看证书有效期

curl -sI https://www.example.com | head -5

续期后确认握手正常

echo | openssl s_client -connect www.example.com:443 2>/dev/null | grep 'Verify return code'

补齐 http 到 https 的跳转

return 301 https://www.example.com$request_uri;

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

恢复的判定其实很直接。证书恢复有效,抓取错误消失,收录和流量在一天内恢复,日志里不再出现握手失败的记录。

证书过期对蜘蛛是硬错误,比 404 更严重,建议设置到期前三十天的提醒,别等流量掉了才发现,恢复也要等下一轮抓取。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189