别把日志一股脑扔给AI——我踩过的爬虫识别弯路,和后来跑通的做法
先说常见的失败做法
去年我接手一个中型站点的运维工作,Nginx 访问日志每天大约几个 GB。老板的一句话很朴素:「最近感觉 API 响应变慢了,是不是被爬虫薅了?你去看看。」
我的第一反应是:现在不是有 AI 吗,直接把日志丢给它分析不就行了?
于是就有了下面这些「反面教材」。
反例一:整个日志文件直接上传。 我把当天的 access.log 打包发给大模型,结果直接超出上下文限制,连门都没进去。就算换成支持超长上下文的模型,几万行重复度极高的日志里,真正异常的行为可能只有几十条,模型注意力被海量正常请求稀释,输出一堆「发现大量 200 状态码请求」之类的废话。
反例二:只截取头部一百行。 爬虫行为恰恰是长周期、低频次的。某个 IP 每 30 秒请求一次,单看任何一段都「人畜无害」。截取头部等于把最有价值的时间维度信息扔掉了。
反例三:让 AI 直接「判断谁是爬虫」。 没有判定标准,模型只能靠 UA 字符串猜。而稍微像样的爬虫早就会伪装成正常浏览器 UA 了,最后得到的结论基本是玄学。
反例四:让 AI 写一段一次性分析代码,跑完就扔。 第二天日志一更新,又要从头描述一遍需求。三番五次之后,这套流程就躺在角落里没人用了。
这四个坑的共同点是:把 AI 当成了一个「读日志的黑盒」,而不是一个「帮你完成分析工作的协作者」。想明白这一点之后,我换了一条路。
正确路径:人做聚合,AI 做研判
核心思路只有一句话:先用一行命令把日志聚合成「行为画像」,再让 AI 对画像做异常研判。
日志太原始,但聚合成「每个 IP 的行为摘要」之后,数据量就从百万行降到几百行,正好落在大模型最擅长处理的区间内,而且信息密度极高。
具体流程分三步:
第一步:聚合。 用 awk 或者让 AI 帮你写一段聚合脚本,把日志按 IP 归纳出这些维度:
- 请求数、独立 URL 数、唯一 Session 数
- 平均请求间隔及其标准差
- 访问路径的分布特征(是否遍历列表页、是否按 ID 顺序抓取)
- UA 种类数、UA 是否随时间变化
- 状态码分布(大量 403/429 往往说明它已经被拦过还在硬闯)
- 访问时间是否集中在凌晨
第二步:研判。 把聚合结果连同业务背景一起交给大模型,让它做三件事:识别可疑 IP 并给出理由、按可疑程度分级、给出对应的处置建议。
第三步:沉淀。 让 AI 把这次的研判逻辑整理成一份可复用的规则文档。下次只需重新跑聚合、套用同样的提示词,五分钟出结果。
可直接复制的提示词模板
你是一名网站安全分析助手。我会提供一份按 IP 聚合的访问日志行为摘要
(CSV 格式),字段包括:ip、请求数、独立URL数、平均请求间隔(秒)、
间隔标准差、UA种类数、UA变化、状态码403/429次数、访问时段分布、
是否按ID顺序抓取、是否遍历列表页。
背景信息:
- 网站类型:{填写你的网站类型}
- 正常用户典型行为:{例如:通过搜索进入,浏览3-10个页面,停留几分钟}
- 已知合法爬虫:{例如:Googlebot、Bingbot}
请你完成:
1. 标记可疑 IP,按「高/中/低」三级分类;
2. 每个可疑 IP 必须给出具体依据(引用字段数值),不允许只给结论;
3. 区分「恶意爬虫」「过激的合规爬虫」「疑似脚本化的正常用户」;
4. 对每一类给出处置建议(限流、封禁、加入robots协议等);
5. 指出摘要数据中你无法判断、需要我补充原始日志佐证的部分;
6. 最后输出一份可直接保存的判定规则文档,供下次分析复用。
数据如下:
{粘贴聚合后的CSV}这个模板的关键设计在于第 2 条和第 5 条:强制模型给依据、强制它承认自己的判断边界。前者防止幻觉式的乱扣帽子(把 CDN 节点当成爬虫封掉就尴尬了),后者防止你盲信结论。
用 AI 前后对比
| 维度 | 之前(裸扔日志) | 之后(聚合+研判) |
|---|---|---|
| 单次分析耗时 | 超长日志根本跑不通,截取样本约半天 | 聚合脚本 1 分钟 + AI 研判 5 分钟 |
| 结论可信度 | 靠 UA 猜,误报率高 | 有数据依据,区分爬虫类型 |
| 复用性 | 一次性,下次重来 | 规则文档沉淀,流程标准化 |
| 团队协作 | 只有我看得懂 | 产出物任何人都能审阅复核 |
最实际的变化是:以前发现「API 变慢」到定位到具体恶意 IP,要翻好几天日志;现在跑一遍流程,当天就能拿到分级名单和处置建议,剩下的是人工复核高可疑项的原始日志片段——AI 缩小范围,人做最终裁决,这个分工比「全交给 AI」靠谱得多。
另外提一句成本:大模型 API 按 Token 计费,聚合后的数据每次调用通常只有几万 Token,具体费用以官网价格页为准,但对小团队来说一般是可以忽略的量级——真正的门槛从来不是钱,而是方法。
几条经验总结
- AI 的价值在研判,不在存储。 别指望它记住你的百万行日志,把它喂成「每 IP 一行画像」才是正确姿势。
- 永远要求模型给出依据。 「IP x.x.x.x 可疑」没有价值,「IP x.x.x.x 平均间隔 0.4 秒且标准差接近 0,UA 在一小时内更换 5 次」才有价值。
- 让 AI 承认不确定。 明确让模型列出需要人工补充验证的部分,能大幅降低误封正常用户的风险。
- 把流程固化成文档。 一次成功的分析如果不沉淀成可复现的流程,等于没做。
如果你还没有顺手的模型 API,可以看看这个平台,聚合好的数据配合提示词模板,注册就能开始跑你的第一份爬虫分析:https://api.thistoken.ai/register
---
不想折腾多家供应商的接入差异?在 https://api.thistoken.ai/register 注册,用一个 base_url 调用所有模型。