昨天晚上十点多我还在公司加班,顺手看了一眼服务器日志,发现有几个陌生的IP段一直在疯狂请求我们的公开接口,抓取的内容基本是产品描述和用户评论。
一开始以为是正常爬虫,后来仔细看User-Agent里带了些大模型相关的关键词,估计是拿去训练AI了。我们之前加过robots.txt,但明显没用。
现在最担心的是公司一些还没公开的策略描述也被抓走了,万一被竞争对手拿去分析就麻烦了。想问问有没有简单有效的办法,能直接把这些爬虫挡掉,又不影响正常用户访问?
昨天晚上十点多我还在公司加班,顺手看了一眼服务器日志,发现有几个陌生的IP段一直在疯狂请求我们的公开接口,抓取的内容基本是产品描述和用户评论。 一开始以为是正常爬虫,后来仔细看User-Agent里带了些大模型相关的关键词,估计是拿去训练AI了。我们之前加过robots.txt,但明显没用。 现在最担心的是公司一些还没公开的策略描述也被抓走了,万一被竞争对手拿去分析就麻烦了。想问问有没有简单有效的办法,能直接把这些爬虫挡掉,又不影响正常用户访问?
昨天晚上十点多我还在公司加班,顺手看了一眼服务器日志,发现有几个陌生的IP段一直在疯狂请求我们的公开接口,抓取的内容基本是产品描述和用户评论。
一开始以为是正常爬虫,后来仔细看User-Agent里带了些大模型相关的关键词,估计是拿去训练AI了。我们之前加过robots.txt,但明显没用。
现在最担心的是公司一些还没公开的策略描述也被抓走了,万一被竞争对手拿去分析就麻烦了。想问问有没有简单有效的办法,能直接把这些爬虫挡掉,又不影响正常用户访问?
面对AI爬虫疯狂抓取公开接口,最直接有效的思路是在服务器前面加一层可实时调整的防护策略,而不是只靠 robots.txt。你可以用 Web 应用防火墙(WAF)的 Bot 管理功能,或在 Nginx/网关层配一套组合规则:User‑Agent 黑名单 + IP 信誉库 + 速率限制 + JavaScript 挑战,这样既能拦掉绝大多数训练数据采集,又不影响正常用户和搜索引擎。
快速翻一下昨晚的日志,重点关注这几个字段:
User‑Agent 里是否包含 GPTBot、CCBot、Bytespider、Claudebot、PerplexityBot、cohere‑ai 等关键词robots.txt 甚至伪造正常浏览器 UA把这些命中的 IP 和 UA 记下来,马上就能用。
| 手段 | 怎么做 | 优点 | 容易误伤的点 |
|---|---|---|---|
| User‑Agent 黑名单 | 在 Nginx/CDN 上对含 GPTBot、CCBot 等 UA 的请求直接返回 403 |
零成本秒生效 | 假 UA 容易绕过,无法作为唯一手段 |
| IP 黑名单 + IP 信誉库 | 将日志里高频机房 IP 加入防火墙,或接入 Cloudflare 等免费 Bot IP 信誉库自动拦截 | 不用每次分析日志 | 必须持续更新,偶尔会误拦代理出口 IP |
| 速率限制 + JS 挑战 | 单 IP 超过设定频次就弹出 CAPTCHA 或返回 503,配合前端注入 JS 验证是否为真实浏览器 | 对批量采集效果最好 | 某些合法 RSS 阅读器或监测工具会受影响 |
通常建议至少同时启用 UA 黑名单和速率限制,再针对重点接口开启 JS 挑战。
nginx.conf 中对敏感路径做限流,例如单 IP 每分钟最多请求 60 次,超过就返回 503 或弹验证页面。if ($http_user_agent ~* (GPTBot|CCBot|Bytespider|Claudebot)) {
return 403;
}
务必把这部分代码放在 server 块最上方,避免后续规则消耗资源。Googlebot、Bingbot、Baiduspider 等 UA 的请求放行,这些爬虫一般遵守 robots.txt 且有固定 IP 段可验证。这类技术防护需要根据爬虫行为不断迭代,但一开始把上述三层配上,就能把九成以上的非授权抓取挡在门外。如果服务器本身已经放在 CDN 后面,优先用 CDN 自带的 Bot 防护,成本最低且不用担心误伤搜索引擎。
我们公司之前也碰到过这种情况,后来直接在Nginx那边把那些UA带大模型关键词的IP段封了,再加了个简单的验证码前置,对正常用户几乎没影响。反正robots.txt就是个君子协议,流氓爬虫根本不看的。建议你也查下那几个IP段的归属,直接拉黑完事。
哎呀这个太常见了,最近我们公司也碰到过。robots.txt就是废纸,直接上频率限制+User-Agent黑名单吧。几个大模型的UA关键词网上搜一下都有列表,加个nginx规则能挡掉一大半。再不行套个Cloudflare,能抗不少恶意爬虫。别纠结,搞起来。
这种事真的烦,我也遇到过。建议你们在Nginx层按User-Agent或请求频率封掉那些明显是爬虫的IP,再配合一个简单的验证码机制,对正常用户影响不大。还有就是敏感接口加个临时token,爬虫很难自动获取。
楼上说得挺详细,我倒是想补充一点,既然robots.txt都没用,说明这些爬虫根本不遵守规则。可以试试结合行为分析,比如同一个IP短时间内多次请求某些接口就限制频率,或者用验证码验证可疑流量。还有,基于User-Agent简单封禁很容易绕过,得多维度判断。感觉这事没法完全堵死,只能把门槛调高点,至少让采集成本变高,竞争对手也不敢随便来。你们有没有考虑过用更严格的身份验证或者接口加密?我听说有些大厂把敏感接口挪到内部网络,公开接口只留必要部分,也可以参考参考。