免费工具 网站日志分析工具:看清蜘蛛和 AI 爬虫抓了什么
统计代码看不到大多数爬虫,因为它们不执行你的统计脚本;服务器访问日志每个请求都记。把日志拖进来,就能知道百度、Google、各家 AI 爬虫抓了哪些页面、抓了多少、返回什么状态码,有没有碰 robots.txt 禁止的路径。
- 文件不离开浏览器
- 197+ 条规则,与 TapCub 一致
- .log / .txt / .gz,最大 1 GB
分析一份访问日志
下面的报表来自一份合成的示例日志(7 天、2,400 条请求)。选择或拖入你自己的日志即可替换;格式按前几行自动识别。
日志只在你的电脑上处理
文件由浏览器读取和解析,不会上传到 TapCub 或任何服务器;IP 只显示截断后的网段。页面加载完后断开网络也能照常使用。
对照的 robots.txt(可选)
粘贴你网站的 robots.txt,统计爬虫请求了多少被禁止的路径。现在填的是示例的 robots.txt,加载你自己的日志时会清空。
示例数据为本页生成的合成日志,IP 都是文档专用地址,不是真实流量。
示例日志(合成) · Nginx / Apache combined · 2,400 条请求 · 2026-11-02 至 2026-11-08
请求数
2,400
真人
55%
1,314
搜索引擎
19%
451
AI 爬虫
16%
394
其它机器人
10%
241
请求占比
- 真人(未命中机器人规则) 55%
- 搜索引擎蜘蛛 19%
- AI 训练爬虫 12%
- AI 答案引擎爬虫 3.5%
- AI Agent(用户触发) 1.1%
- 其它机器人 10%
机器人排行
按 User-Agent 匹配 TapCub 内置规则,第一个命中的算。IP 网段:IPv4 取 /24,IPv6 取 /48。
| 机器人 | 类型 | 请求数 | 占比 | IP 网段 | 核验 |
|---|---|---|---|---|---|
| GooglebotGoogle | 搜索引擎 | 278 | 12% | 192.0.2.0/24 ×260203.0.113.0/24 ×18 | 反向 DNS:googlebot.com, google.com |
| GPTBotOpenAI | AI 训练 | 121 | 5.0% | 192.0.2.0/24 ×121 | 反向 DNS:openai.com |
| BingbotMicrosoft | 搜索引擎 | 98 | 4.1% | 192.0.2.0/24 ×98 | 反向 DNS:search.msn.com |
| BytespiderByteDance | AI 训练 | 86 | 3.6% | 198.51.100.0/24 ×86 | 未公布核验域名 |
| AhrefsBotAhrefs | SEO 工具 | 78 | 3.3% | 203.0.113.0/24 ×78 | 未公布核验域名 |
| ClaudeBotAnthropic | AI 训练 | 77 | 3.2% | 198.51.100.0/24 ×77 | 未公布核验域名 |
| Baiduspider百度 | 搜索引擎 | 75 | 3.1% | 192.0.2.0/24 ×75 | 反向 DNS:baidu.com, baidu.jp |
| python-requests | 脚本客户端 | 47 | 2.0% | 203.0.113.0/24 ×47 | 未公布核验域名 |
| UptimeRobotUptimeRobot | 监控 | 45 | 1.9% | 2001:db8:77::/48 ×45 | 未公布核验域名 |
| PerplexityBotPerplexity | AI 答案引擎 | 43 | 1.8% | 198.51.100.0/24 ×43 | 未公布核验域名 |
| OAI-SearchBotOpenAI | AI 答案引擎 | 40 | 1.7% | 192.0.2.0/24 ×40 | 未公布核验域名 |
| HeadlessChrome | 无头浏览器 | 30 | 1.3% | 203.0.113.0/24 ×30 | 未公布核验域名 |
| ChatGPT-UserOpenAI | AI Agent | 27 | 1.1% | 198.51.100.0/24 ×27 | 未公布核验域名 |
| facebookexternalhitMeta | 社交预览 | 25 | 1.0% | 2001:db8:fb::/48 ×25 | 未公布核验域名 |
| Empty User-Agent | 脚本客户端 | 16 | 0.7% | 203.0.113.0/24 ×16 | 未公布核验域名 |
请求了 robots.txt 禁止的路径
只看爬虫(搜索引擎、AI、SEO、社交预览),用它的 robots.txt 名字对应的组,没有就用 User-agent: *。按 RFC 9309,最长匹配的规则生效。
| 机器人 | 使用的组 | 请求数 | 被禁止的路径 |
|---|---|---|---|
| Bytespider | User-agent: Bytespider | 15 | /pricing ×3 · Disallow: //docs/api ×3 · Disallow: //blog/ ×2 · Disallow: //blog/page/3 ×2 · Disallow: //docs/install ×2 · Disallow: / |
| Googlebot | User-agent: * | 13 | /search?q=a ×7 · Disallow: /search/cart ×3 · Disallow: /cart/search?q=b ×3 · Disallow: /search |
| GPTBot | User-agent: GPTBot | 13 | /blog/ ×4 · Disallow: //pricing ×3 · Disallow: //blog/website-analytics-guide ×2 · Disallow: // ×1 · Disallow: //blog/ai-crawlers-explained ×1 · Disallow: / |
各类访问者的热门路径
真人(未命中机器人规则)
| 路径 | 请求数 |
|---|---|
/ | 125 |
/assets/logo.svg | 106 |
/favicon.ico | 102 |
/pricing | 100 |
/assets/main.css | 100 |
/blog/ | 95 |
/blog/ai-crawlers-explained | 93 |
/assets/app.js | 92 |
/blog/website-analytics-guide | 84 |
/about | 83 |
搜索引擎蜘蛛
| 路径 | 请求数 |
|---|---|
/blog/ | 56 |
/ | 41 |
/pricing | 41 |
/robots.txt | 36 |
/docs/install | 33 |
/blog/page/2 | 31 |
/docs/api | 31 |
/blog/website-analytics-guide | 31 |
/features | 30 |
/blog/ai-crawlers-explained | 29 |
AI 训练爬虫
| 路径 | 请求数 |
|---|---|
/robots.txt | 184 |
/pricing | 16 |
/blog/ | 15 |
/docs/api | 14 |
/docs/install | 14 |
/blog/ai-crawlers-explained | 12 |
/ | 10 |
/blog/website-analytics-guide | 8 |
/features | 5 |
/about | 4 |
AI 答案引擎爬虫
| 路径 | 请求数 |
|---|---|
/pricing | 27 |
/ | 24 |
/blog/ai-crawlers-explained | 18 |
/blog/website-analytics-guide | 14 |
AI Agent(用户触发)
| 路径 | 请求数 |
|---|---|
/docs/install | 14 |
/pricing | 13 |
其它机器人
| 路径 | 请求数 |
|---|---|
/ | 104 |
/pricing | 22 |
/blog/ai-crawlers-explained | 19 |
/api/v1/users | 13 |
/.env | 12 |
/docs/install | 12 |
/wp-login.php | 11 |
/xmlrpc.php | 9 |
/docs/api | 8 |
/blog/website-analytics-guide | 8 |
状态码
| 状态码 | 真人 | 搜索 | AI | 其它机器人 |
|---|---|---|---|---|
| 200 | 838 | 312 | 360 | 129 |
| 206 | 0 | 0 | 0 | 8 |
| 301 | 0 | 82 | 0 | 32 |
| 304 | 386 | 0 | 0 | 0 |
| 400 | 0 | 0 | 0 | 8 |
| 403 | 0 | 9 | 5 | 5 |
| 404 | 90 | 48 | 29 | 59 |
按天请求数
| 日期 | 真人 | 搜索 | AI | 其它机器人 | 合计 |
|---|---|---|---|---|---|
| 2026-11-02 | 179 | 63 | 62 | 39 | 343 |
| 2026-11-03 | 183 | 65 | 52 | 43 | 343 |
| 2026-11-04 | 191 | 58 | 60 | 34 | 343 |
| 2026-11-05 | 183 | 67 | 63 | 30 | 343 |
| 2026-11-06 | 195 | 70 | 53 | 25 | 343 |
| 2026-11-07 | 201 | 72 | 44 | 26 | 343 |
| 2026-11-08 | 182 | 56 | 60 | 44 | 342 |
Baiduspider 或 Googlebot。表里显示截断的 IP 网段,方便发现从陌生网络来的「爬虫」。要确认真假,对完整 IP 做反向 DNS 解析再正向解析(百度、Google、Bing、Yandex、Apple、OpenAI 公布了域名,见「核验」列),或对照官方公布的 IP 段。参考 Google 的核验说明。版本 v1.0更新于 更新记录
报表说明了什么
示例里真人占 55% 的请求,搜索引擎 19%,AI 爬虫 16%,其它机器人 10%。看你自己网站的数字时,这样理解:
请求占比
这里数的是请求,不是访问:真人打开一个页面会顺带请求十几个文件(JS、CSS、图片),爬虫通常只取 HTML,所以真人的占比会比按页面算的高。机器人之间比、和上个月比,不要拿去和统计后台的访问数比。
机器人排行和 IP 网段
真爬虫来自运营方自己的网络。示例里 Googlebot 有 260 次来自一个网段、18 次来自另一个,这正是伪造 UA 留下的痕迹。封禁前先用反向 DNS 核验。
被禁止的路径
爬虫请求了 robots.txt 禁止的路径。刚改完 robots.txt 的一天内有几次是正常的:RFC 9309 允许爬虫缓存 robots.txt 最多 24 小时。如果持续出现,说明它不遵守,或者 UA 是假的。
状态码和按天趋势
搜索引擎大量 404,多半是站内死链或 sitemap 过期;301 链会浪费抓取次数;爬虫拿到 403 说明防火墙在拦它,确认是不是你想要的。某一天突增,常和发版或提交新 sitemap 对得上。
「真人」指没有命中任何机器人规则;用普通浏览器 UA 的采集脚本也会算在这里,所以把它当上限看。TapCub 产品在 UA 之外还结合请求头、行为、网络和频率判断;这个工具只看 UA。
拿到日志,拖进来,看报表
需要能下载服务器或 CDN 的访问日志。日志一般每天切分一次,取一周就能看出规律。
-
1
找到访问日志
宝塔面板:
/www/wwwlogs/你的域名.log(面板「网站 → 日志」也能下载)。Nginx:/var/log/nginx/access.log。Apache:/var/log/httpd/access_log或/var/log/apache2/access.log。IIS:C:\inetpub\logs\LogFiles\W3SVC1\。切分后的.gz直接拖进来即可。 -
2
拖进来
按前 50 行识别格式,分块读取并显示进度,几百 MB 的文件也没问题。想查 robots 违规,在可选框里粘贴你的 robots.txt。
-
3
处理问题
封禁或限速不想要的机器人,修好蜘蛛常碰到的 404,导出 CSV 下个月对比。百度蜘蛛的抓取频次和抓取异常,也可以在百度搜索资源平台对照看。
日志怎么读、请求怎么分类
每条请求的 User-Agent 按顺序、不分大小写匹配 TapCub 内置的 197+ 条机器人规则,第一个命中的规则决定是哪个机器人、属于哪一类;UA 为空算脚本客户端。这和 TapCub 统计机器人流量用的是同一套规则。
- 日期按日志自己的时间:Nginx、Apache 是服务器本地时间(国内服务器一般是北京时间),Cloudflare 和 IIS 是 UTC
- 热门路径不含查询参数;robots 对照用完整的路径和参数
- 逐行解析;每类最多记 5,000 个不同路径,超出的计入「其它路径」
| 格式 | 识别方式 | 用到的字段 |
|---|---|---|
| Nginx / Apache combined(宝塔默认) | IP - - [时间] "GET /路径 HTTP/1.1" 状态码 字节 "来源" "UA" | IP、日期、请求路径、状态码、UA |
| Apache common | 同上,但没有来源和 UA | IP、日期、路径、状态码(无法区分机器人) |
| Cloudflare Logpush | 一行一个 JSON,含 ClientRequestUserAgent 或 ClientRequestURI | ClientIP、EdgeStartTimestamp、ClientRequestURI、EdgeResponseStatus、ClientRequestUserAgent |
| IIS W3C 扩展格式 | 有 #Fields: 头部行 | date、c-ip、cs-uri-stem、cs-uri-query、sc-status、cs(User-Agent) |
示例日志里能看出什么
示例是合成数据:一个小网站 7 天的访问,robots.txt 从 11 月 2 日起禁止 GPTBot 和 Bytespider。下面的数字直接来自上方报表。
| 发现 | 数字 | 说明 |
|---|---|---|
| 机器人总数 | 15 种 | 搜索引擎、AI 爬虫、SEO 工具、可用性监控、链接预览和脚本 |
| AI 训练爬虫 | 占 12% 的请求 | 主要是 GPTBot、ClaudeBot、Bytespider |
| GPTBot 请求被禁止的路径 | 121 次中有 13 次 | 都在 11 月 2 日;之后只取 robots.txt,符合 RFC 9309 允许的 24 小时缓存 |
| 「Googlebot」请求被禁止的路径 | 13 次 | 全部来自第二个网段(共 18 次),请求 /cart 和 /search:很可能是伪造 UA |
| Bytespider 请求被禁止的路径 | 15 次 | 同样只在禁止生效的第一天 |
用真实日志时,封禁这个可疑的 Googlebot 之前,先对它的完整 IP 做反向 DNS 核验。示例用的是文档专用 IP 段,无法核验。
看日志常见的误判
日志对请求记录得很准,对意图一无所知。
只看 UA 就下结论
只按 UA 放行或封禁很容易被骗。大的爬虫用 DNS 或 IP 段核验,核验不了的当作未知。
拿请求数和访问数比
日志记录每一个文件。按请求算的机器人占比不等于按页面或访问算的占比,要比就筛出 HTML 页面再比。
只看一台服务器
用了 CDN 或负载均衡,每台源站只看到一部分流量,CDN 命中缓存的请求根本不到源站。用 CDN 日志,或把所有源站的日志合起来。
以为 robots.txt 能拦住
robots.txt 是请求,不是门锁。守规矩的爬虫会遵守,其余的要靠防火墙规则、限速或登录。
机器人流量每天单独一条线
TapCub 在每张报表里把真人和机器人分开,爬虫不会把数字撑大;AI 爬虫有单独的账本。
怎么看哪些蜘蛛在抓我的网站?
看服务器访问日志,而不是统计后台:大多数爬虫不执行 JavaScript,基于统计代码的工具记不到它们(少数会渲染页面的,比如 Googlebot,一般也会被当作机器人过滤掉)。把日志拖进来,「机器人排行」会列出每个识别到的爬虫、请求数、类型和 IP 网段。
宝塔面板的网站日志在哪里?
默认在 /www/wwwlogs/ 目录,文件名是 域名.log,切分后的历史日志在同目录或 history_backups 里,通常是 .gz。可以在面板「文件」里下载,也可以在「网站 → 设置 → 日志」查看。宝塔默认就是 combined 格式,可以直接分析。
怎么判断百度蜘蛛是真是假?
看 IP,不看 UA。对完整 IP 做反向 DNS 解析,真的百度蜘蛛解析到 *.baidu.com 或 *.baidu.jp,再正向解析回同一个 IP 才算通过(Linux 用 host IP)。报表里的 IP 网段可以帮你先挑出可疑的那些。
怎么知道有没有 AI 爬虫在抓?
AI 爬虫会在 UA 里写明身份:GPTBot、OAI-SearchBot、ChatGPT-User(OpenAI),ClaudeBot(Anthropic),PerplexityBot,Bytespider(字节跳动),CCBot 等。报表把它们分成训练爬虫、AI 答案引擎爬虫和用户触发的 Agent:想禁止训练、又想出现在 AI 回答里时,这个区分很关键。Google-Extended 这类只是 robots.txt 里的名字,日志里不会出现。
日志文件会上传吗?
不会。文件用浏览器的 File API 读取、在你的设备上处理,没有上传步骤,也没有服务器端处理。屏幕上和 CSV 里只有汇总数字,IP 截断到 /24 或 /48 网段。
多大的日志能分析?
单个文件最大 1 GB,分块读取,内存占用取决于不同机器人和路径的数量,而不是文件大小;.gz 边读边解压。特别大的日志,挑几天有代表性的分析通常就够了。
为什么禁止了还在抓?
常见三种原因:刚改完 robots.txt,爬虫还在用缓存(RFC 9309 允许最多 24 小时);UA 是伪造的;或者这个爬虫不遵守 robots.txt。代表用户访问的 Agent(如 ChatGPT-User)对 robots.txt 的处理也可能和爬虫不同。
阿里云、腾讯云 CDN 的日志能分析吗?
国内 CDN 的日志字段顺序各家不同,和 Nginx combined 不一致,目前识别不了。可以分析源站的 Nginx / Apache 日志;注意命中 CDN 缓存的请求不会出现在源站日志里。