三小时缩到二十分钟 - 我让AI接管了访问日志里的爬虫识别
一个独立开发者的痛点
我自己维护着一个内容型网站,日均访问量不大,几十万PV的样子。没有专门的安全团队,没有运维,所有事情都是我一个人干。
最头疼的事情之一就是爬虫。有些爬虫很规矩,robots.txt 写了就遵守;但有些伪装成正常用户,慢慢刷接口、批量抓详情页、薅数据。等我发现的时候,往往已经是数据库慢查询报警、带宽异常、或者用户数据被人整站扒走了。
过去我的做法很原始:
- 手动grep日志,按User-Agent粗筛;
- 用Excel/写临时脚本统计IP访问频次;
- 凭经验判断哪些是异常——比如“单IP每分钟超过100次请求就封”。
这套流程的问题很明显:慢、糙、误伤高。有次我把一个高校机房出口IP整段封了,因为那个IP后面是几百个真实学生用户。还有一次,一个低频但行为极其诡异的爬虫——每天只来30次,专抓付费内容——潜伏了两周我才注意到。
整个过程,每次例行分析要花我 2.5~3小时,而且结论质量全靠当天状态。
换个思路:把日志扔给AI
后来我想明白了一件事:爬虫识别本质上是一个模式识别+解释的问题,而这恰恰是大模型擅长的。我不需要AI实时处理百万行日志——那不现实也不经济——我只需要它替代我做“分析、归纳、给出可解释结论”这一步。
现在我的流程是这样的:
第一步:本地预处理。 写一个50行的Python脚本,把Nginx日志聚合成结构化摘要:每个IP的请求总数、时间分布(比如是否集中在凌晨3-5点)、路径熵值(访问URL是否高度规律)、User-Agent分布、HTTP状态码比例、请求间隔方差。原始日志百万行,聚合成摘要后通常只有几千行token。
第二步:喂给AI分析。 把摘要和一段精心写的提示词一起发给模型,让它输出结构化报告。
第三步:人工复核+落地。 AI给出的可疑IP清单,我用另一个脚本抽查原始日志确认,然后决定是限流、封禁还是加验证码。
关键点在于:预处理在本地做,AI负责判断和解释。这样既控制了成本,又避免了把原始日志里的用户隐私数据发出去。
我实际在用的提示词模板
你是一名Web流量安全分析师。我会给你一份访问日志的聚合摘要数据,
请从中识别可能的异常爬虫行为。
数据字段说明:
- ip: 来源IP
- req_total: 请求总数
- active_hours: 请求活跃时段(0-23小时分布)
- path_entropy: 访问路径熵值(越低越规律)
- interval_cv: 请求间隔变异系数(越低越像脚本)
- ua_count: 不同User-Agent数量
- status_4xx_ratio: 4xx状态码占比
请按以下要求输出:
1. 列出可疑IP,按可疑程度排序,附风险等级(高/中/低);
2. 对每个可疑IP,用一句话说明判断依据(如"请求间隔变异系数极低
且集中在凌晨时段,符合脚本特征");
3. 区分"确定是爬虫"和"可能是正常用户但行为异常"两类,避免误伤
NAT出口、机房用户;
4. 给出对应的处置建议:封禁 / 限流 / 加验证码 / 仅观察;
5. 最后总结本次日志中爬虫流量的整体占比和主要行为模式。
数据如下:
{粘贴聚合后的摘要数据}前后对比:不只是快
我连续用这套流程跑了一个月,记录了实际数据(我自己的项目,非客户数据):
| 维度 | AI介入前 | AI介入后 |
|---|---|---|
| 单次例行分析耗时 | 约3小时 | 约20分钟(含复核) |
| 误伤正常用户次数 | 一个月3次 | 一个月0次 |
| 隐匿型爬虫发现速度 | 平均一周以上 | 当天发现 |
| 结论可解释性 | 凭感觉,说不清 | 每个判断有依据 |
最让我意外的是第三项。以前我只盯着高频IP看,AI却能注意到“某IP三天内按字母序遍历了所有分类页,频率很低但路径熵值异常”——这种潜伏式爬虫,靠人工几乎不可能发现。AI把识别维度从“频次”扩展到了“行为结构”,这是质的提升。
成本方面,聚合后的数据每次大约几万token,月度成本对我这种规模来说几乎可以忽略(具体价格以官网价格页为准,不同模型差异很大,建议先用便宜模型跑通流程)。
几个踩过的坑
- 不要直接扔原始日志。 一是token浪费严重,二是日志里可能有用户信息,脱敏和聚合必须在本地先完成。
- AI会过度自信。 它偶尔会把CDN回源IP判为可疑。所以人工复核环节不能省——AI负责把一百个IP筛到五个,你负责最后拍板。
- 提示词里明确“避免误伤”很重要。 一开始我提示词里只写“找出爬虫”,结果它恨不得把所有流量都标成可疑。加上“区分正常用户异常行为”这条约束后,准确率明显提升。
- 让它输出判断依据,而不只是结论。可解释的报告才敢拿去执行封禁操作。
写在最后
对于独立开发者和小团队来说,安全这件事最大的成本从来不是工具,而是人的时间。以前“分析日志防爬虫”是一件重要但总被推迟的事,现在它变成了我每周固定20分钟的例行操作。
把这类重复性的分析工作交给AI,人只做最后的决策——这个分工模式,几乎可以复制到日志分析之外的所有“数据多、没人看”的场景。
如果你也想试一试这套流程,需要一个稳定好用的模型API来支撑,可以看看这个平台:https://api.thistoken.ai/register,注册就能开始把你的第一份日志摘要喂给模型了。
---
想直接跑通示例?访问 https://api.thistoken.ai/register 注册 ThisToken.AI,获取 API Key 后即可开始。