网站日志里怎么认出 GPTBot:一条命令查出来
判断「AI 到底有没有来抓我的站」,最靠谱的方式不是猜,也不是等第三方工具,而是看自己的服务器访问日志。这篇文章给的是能直接跑的命令。 第一步:确认日志在哪 常见位置: 宝塔面板:/www/wwwlogs/域名.log Nginx 默认:/
判断「AI 到底有没有来抓我的站」,最靠谱的方式不是猜,也不是等第三方工具,而是看自己的服务器访问日志。这篇文章给的是能直接跑的命令。
第一步:确认日志在哪
常见位置:
- 宝塔面板:
/www/wwwlogs/域名.log - Nginx 默认:
/var/log/nginx/access.log - Apache 默认:
/var/log/apache2/access.log或/var/log/httpd/access_log - 虚拟主机:控制面板里找「访问日志」下载
如果是套了 CDN,源站日志看到的可能是 CDN 回源 IP,需要在 CDN 后台看日志,或者配置真实 IP 透传。
第二步:一条命令统计 AI 爬虫
grep -iE "GPTBot|ChatGPT-User|OAI-SearchBot|ClaudeBot|PerplexityBot|Bytespider|Google-Extended|CCBot" access.log | awk '{print $1, $9}' | sort | uniq -c | sort -rn | head -30
这条命令做三件事:筛出 AI 爬虫的请求、提取 IP 和状态码、按出现次数排序。输出大概长这样:
842 20.15.xxx.xxx 200
317 20.15.xxx.xxx 404
64 34.98.xxx.xxx 200
看到 200 说明抓取正常,看到 404 说明有大量死链在浪费抓取预算,看到 403 说明被防火墙拦了。
第三步:看它抓了哪些页面
grep -i "GPTBot" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
这一步最能说明问题:
- 如果全是首页和列表页,说明内链结构有问题,爬虫进不到文章页
- 如果全是旧文章,说明站点地图或者内链没有把新内容推出去
- 如果集中抓某一类页面(比如 tag 页),说明那一块可能被当成了主要内容
第四步:验证 UA 是不是伪造的
UA 字符串可以随便写,日志里出现 GPTBot 不等于真的是 OpenAI。要看 IP。
OpenAI 公布了爬虫的 IP 段,可以在官方文档查到。简单验证方式:
dig -x 20.15.xxx.xxx
或者用在线 IP 反查工具看归属。如果发现某个 IP 声称自己是 GPTBot 但归属地是某个 IDC 机房、且频率高得离谱(一秒几十次),基本可以判定是伪装的采集器,可以考虑封掉。
更严谨的做法是维护一份「官方 IP 段 + 反向解析」白名单,只对真正来自官方的请求特殊处理。
第五步:看抓取节奏
grep -i "GPTBot" access.log | awk '{print $4}' | cut -c2-15 | uniq -c | head -30
这条按时间统计,能看出抓取频率是在上升还是下降。如果某段时间突然停了,回去查那几天有没有改过 robots.txt、换过服务器、或者被防火墙拦过——这些都是掉抓取的典型原因。
一个现实提醒
很多小站统计下来会发现:GPTBot 一个月只来几十次,ClaudeBot 更少,Bytespider 可能一次都没来。这不是你做错了什么,而是 AI 爬虫的资源本来就集中在高权重站点上。
这种情况下,日志分析的价值不是「证明我做得对不对」,而是「知道自己在什么位置」——知道没来,就不会把时间浪费在等待上,去做点别的更实在。