1. 配置 Nginx 结构化 JSON 访问日志
为了精准计算搜索引擎爬虫在各个子目录的响应延迟(TTFB)与状态码分布,建议在 Nginx 的 `http` 块中定义名为 `seo_crawler_json` 的日志格式,包含完整的请求耗时、上游耗时与客户端 IP 字段:
/etc/nginx/conf.d/seo-log-format.confnginx
log_format seo_crawler_json escape=json '{'
'"timestamp":"$time_iso8601",'
'"client_ip":"$http_x_forwarded_for",'
'"remote_addr":"$remote_addr",'
'"host":"$host",'
'"method":"$request_method",'
'"uri":"$request_uri",'
'"status":$status,'
'"bytes_sent":$body_bytes_sent,'
'"request_time":$request_time,'
'"upstream_time":"$upstream_response_time",'
'"user_agent":"$http_user_agent",'
'"referer":"$http_referer"'
'}';
map $http_user_agent $is_search_crawler {
default 0;
~*(Baiduspider|bingbot|Googlebot|Sogou|YisouSpider|Bytespider) 1;
}
access_log /var/log/nginx/search_crawlers.json.log seo_crawler_json if=$is_search_crawler;2. 内置支持的搜索引擎爬虫特征与 rDNS 后缀库
日志分析引擎对每一条命中 `is_search_crawler` 的日志记录自动执行异步 DNS 反向解析(PTR)与正向确认(A/AAAA),严格区分真实搜索引擎蜘蛛与伪造 UA 的恶意抓取流量:
| 搜索引擎 | UA 匹配关键字 | rDNS 可信域名后缀 | 典型抓取特征 |
|---|---|---|---|
| 百度搜索 (Baidu) | Baiduspider / Baiduspider-render | .crawl.baidu.com / .crawl.baidu.jp | 对移动端适配、首屏 HTML 直出速度与死链率极度敏感 |
| 必应搜索 (Bing) | bingbot / adidxbot / MicrosoftPreview | .search.msn.com | 深度集成 IndexNow 实时通知,支持 ETag 304 缓存复用 |
| 搜狗搜索 (Sogou) | Sogou web spider / Sogou inst spider | .sogou.com | 重视子目录层级清晰度与站内锚文本语义相关性 |
| Google 搜索 | Googlebot / Google-InspectionTool | .googlebot.com / .google.com | 具备完整的 Chromium 渲染管线,严格考核 Core Web Vitals |
3. 抓取异常告警阈值建议
在控制台中接入日志流后,建议开启以下四条默认告警规则,以便在搜索流量受损前第一时间介入修复:
- 1真实蜘蛛 5xx 状态码占比连续 5 分钟超过 0.5% 时触发 P0 级告警。
- 2核心内容目录(/blog/*、/docs/*)蜘蛛平均 TTFB 响应耗时超过 500ms 时触发性能优化提醒。
- 3单日 404 状态码抓取请求数环比激增超过 30% 时输出死链来源 Referer 报表。
- 4伪造 Baiduspider UA 的非官方 IP 请求频率超过 60 次/分钟时自动生成防火墙封禁名单。