蓝易云CDN:防止AI 爬虫和其他机器人恶意抓取

蓝易云CDN:防止AI爬虫和其他机器人恶意抓取

近两年,各类AI公司的数据采集爬虫大量出现,不少站长发现服务器带宽和负载莫名上涨,原创内容也被批量抓走。处理这个问题,关键在于先分类、再决策、后执行,而不是简单地把所有机器人一律拦截。

一、先搞清楚抓取你网站的是谁 🔍

目前访问网站的机器人大致分为四类:

  1. 搜索引擎爬虫:负责收录和排名,屏蔽后网站可能从搜索结果中消失,一般应放行。
  2. AI训练爬虫:抓取内容用于训练大模型,例如 GPTBot、ClaudeBot、CCBot 等。
  3. AI搜索与用户触发抓取:用户在AI产品中提问时实时读取网页,例如 OAI-SearchBot、ChatGPT-User、PerplexityBot 等。
  4. 恶意机器人:伪造身份的采集器、漏洞扫描器、刷接口脚本。

前三类大多会公开标识身份,第四类才是真正需要重点防范的对象。

⚠️ 各公司的爬虫名称会不断调整和新增,配置前请以其官方文档公布的最新名称为准。

二、第一步:用robots.txt表明态度 📄

对于遵守规则的AI爬虫,robots.txt是最直接的方式。例如禁止部分常见AI训练爬虫,同时保留搜索引擎收录:

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Google-Extended
Disallow: /

这里有两个细节需要说明:

  • Google-Extended 并不是独立的爬虫,而是一个控制标识,用于声明内容是否可用于Gemini等模型训练,屏蔽它不影响网页在搜索中的正常收录。
  • 训练爬虫和搜索类爬虫往往是分开的,如果希望网站在AI搜索结果中被引用,可以只禁训练类、保留搜索类。

三、第二步:服务端强制拦截 🚫

robots.txt只是约定,并不具备强制力。据公开报道,部分爬虫存在不遵守该规则的情况。对于明确不想放行的机器人,可在Nginx中按User-Agent直接拦截:

map $http_user_agent $block_bot {
    default        0;
    ~*GPTBot       1;
    ~*CCBot        1;
    ~*Bytespider   1;
}

server {
    if ($block_bot) { return 403; }
}

在CDN控制台中,如果提供了按User-Agent或请求头设置访问规则的功能,也可以在边缘节点直接拦截,减少回源压力,具体以控制台实际功能为准。

四、第三步:应对伪装身份的机器人 🎭

UA拦截只对“诚实”的爬虫有效,伪装成浏览器的采集程序需要组合手段:

  • 身份核验:部分AI公司公开了爬虫的IP段,搜索引擎则支持反向DNS核对。UA声称是某爬虫、IP却对不上的,基本可判定为冒充。
  • 频率限制:对单IP、单会话设置访问上限,超出后触发验证或限速。
  • JS挑战与人机验证:过滤不具备浏览器环境的自动化请求。
  • 蜜罐链接:在页面中放置普通用户看不到、且已在robots.txt中禁止的路径,访问者可直接标记为恶意机器人。

五、上线后持续观察 📊

规则不是一次配置就结束。建议每周查看访问日志,统计各类UA的请求量和带宽占比,重点关注:新出现的爬虫名称、突增的机房IP、集中访问的接口路径。发现误伤正常用户或搜索引擎,要及时调整。

总结 ✅

防止AI爬虫抓取,可以按robots.txt声明、服务端强制拦截、行为识别兜底三层来做。先分清搜索引擎、AI训练、AI搜索和恶意机器人,再根据自身对收录与内容保护的取舍制定规则。CDN在边缘承担拦截和限速,源站负责精细判断,两者配合,才能既保护内容,又不影响网站的正常曝光。

THE END