⭐ 推荐:社区规则条款 V1.0

如何通过日志看蜘蛛的抓取时间分布?

周末
周末 正式会员超兽战士
发布于 2026-10-11 13:06 ·3 浏览 ·0 回复

学完这篇你能得到一张按小时统计的蜘蛛抓取次数分布表,知道百度、Google、必应等爬虫在一天中哪些时段来、是否集中或异常。

第一步:确认日志位置和蜘蛛 UA

这一步要找到网站访问日志,并确定要统计的爬虫关键词,做完后你会知道日志路径和过滤词。

宝塔 Linux 面板 8.0.3 的入口是:左侧菜单「网站」> 右侧选择站点 > 顶部标签「日志」>「访问日志」。
日志文件通常在:

/www/wwwlogs/example.com.log

常见蜘蛛 UA 关键词:

Baiduspider
Googlebot
bingbot
YisouSpider
Sogou web spider

注意:如果开启了 CDN,源站日志可能看不到真实蜘蛛 UA,需要去 CDN 控制台下载日志。例如腾讯云 CDN 控制台 >「统计分析」>「日志下载」> 选择日期 >「下载原始日志」。

第二步:过滤蜘蛛访问并查看原始记录

这一步要从日志中筛出蜘蛛请求,做完后你能看到包含时间和 UA 的原始日志行。

先查看最近 100 条里的蜘蛛记录:

tail -n 100 /www/wwwlogs/example.com.log | grep -E "Baiduspider|Googlebot|bingbot"

Nginx 默认 combined 日志格式类似:

123.45.67.89 - - [24/Jul/2024:03:15:22 +0800] "GET /post.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0)"

其中 [24/Jul/2024:03:15:22 +0800] 就是访问时间。

注意:如果日志按天切割,例如 example.com.log.2024-07-23,需要先合并或逐个文件统计。

第三步:按小时统计抓取次数

这一步要提取每条蜘蛛日志的小时,做完后你会得到“小时 + 次数”的分布结果。

执行:

grep -E "Baiduspider|Googlebot|bingbot" /www/wwwlogs/example.com.log | awk -F'[' '{split($2,a,":"); print a[2]}' | sort | uniq -c | sort -k2,2

输出类似:

  12 00
  35 01
  58 02
  71 03
   9 04

表示当天 0 点到 4 点蜘蛛分别抓取了 12、35、58、71、9 次。

如果只想看某一天:

grep -E "Baiduspider|Googlebot|bingbot" /www/wwwlogs/example.com.log | grep "24/Jul/2024" | awk -F'[' '{split($2,a,":"); print a[2]}' | sort | uniq -c | sort -k2,2

第四步:按蜘蛛类型分别统计

这一步要把百度、Google、必应分开看,做完后你能知道每种蜘蛛的时间分布。

执行:

for bot in Baiduspider Googlebot bingbot; do
  echo "=== $bot ==="
  grep "$bot" /www/wwwlogs/example.com.log | awk -F'[' '{split($2,a,":"); print a[2]}' | sort | uniq -c
done

如果某类蜘蛛数量明显集中在凌晨 2 点到 5 点,通常说明搜索引擎在该时段调度抓取。

注意:UA 可以被伪造,日志统计只能作为近似参考,不能当成绝对准确的爬虫来源。

第五步:导出成 CSV 或图表

这一步要把统计结果变成表格或网页,做完后你可以用 Excel 或浏览器查看趋势。

导出 CSV:

grep -E "Baiduspider|Googlebot|bingbot" /www/wwwlogs/example.com.log | awk -F'[' '{split($2,a,":"); print a[2]}' | sort | uniq -c | awk '{print $2","$1}' > spider_hours.csv

文件 spider_hours.csv 有两列:小时、次数。用 Excel 打开后选中两列,插入折线图即可。

如果想生成网页报表,可在宝塔面板 8.0.3 中:「软件商店」> 搜索「GoAccess」> 安装版本 1.9.4,然后在服务器终端执行:

goaccess -f /www/wwwlogs/example.com.log --agent-filter="Baiduspider|Googlebot|bingbot" --html-report=/www/wwwroot/example.com/spider-report.html

浏览器访问:

https://example.com/spider-report.html

在 GoAccess 1.9.4 的 HTML 报表顶部找到「Time Distribution」,即可看到小时分布图。

注意:日志时间可能是 UTC 时间,与北京时间相差 8 小时。宝塔默认日志通常使用服务器本地时间,但新站点要先确认时区。

小结

  • 先看日志路径:宝塔 8.0.3 在「网站 > 日志 > 访问日志」。
  • 用 grep -E "Baiduspider|Googlebot|bingbot" 过滤蜘蛛。
  • 用 awk 提取 [24/Jul/2024:03:15:22] 中的小时。
  • 用 sort | uniq -c 统计每个小时次数。
  • 导出 CSV 可画趋势图,开启 CDN 时要下载 CDN 日志而不是只看源站日志。
版权声明:本文来自 GJ站长论坛《如何通过日志看蜘蛛的抓取时间分布?》
原文链接:https://www.gj0.com/thread-1633.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~