应用安全

如何识别正常用户、恶意爬虫和自动化 Bot?

Bot 不等于坏人。本文把流量判据拆成凭据、环境、行为三层,给出可落地的判定顺序与分级处置矩阵,以及为什么「加白名单」比「调低阈值」更正确。

先纠正一个误区:Bot 不等于坏人

类型 典型例子 应该拦吗
搜索引擎爬虫 主流搜索引擎、收录型 AI 抓取器 不该,但要验证身份后放行
商业 API 调用方 合作伙伴、客户系统集成 不该,走独立令牌与配额
可用性与监控 拨测、健康检查 不该,加白名单
恶意爬虫与采集 剧集/商品/内容批量抓取 应该
滥用脚本 刷量、薅额度、撞库、刷票 应该

把「自动化」当成恶意会误伤搜索引擎与合作伙伴;把「自动化」当成无害会让账单和版权一起失控。真正的任务不是分辨人还是机器,而是分辨「已授权的自动化」和「未授权的自动化」。

判据的三层结构

凭据层:你说你是谁。 签名令牌、mTLS 证书、API Key、OAuth 声明。这一层最强,也最容易被工程团队忽略——因为大多数系统的凭据只用于鉴权,不参与风控判定。

环境层:你从什么环境来的。 TLS 指纹(握手参数组合)、HTTP/2 帧序、浏览器环境完整性、是否执行了 JS 挑战。脚本直接发请求时,这些特征与真实浏览器不同,几乎无法靠改 UA 掩盖。Cloudflare Bot Management 在边缘采集这类信号并结合全局流量训练的模型给出 Bot Score(1–99 的自动化置信度)。

行为层:你在做什么。 请求节奏是否机械均匀、是否只访问生成类端点、会话是否只有开始没有心跳、端点访问序列是否符合真实播放或浏览路径。行为层最难伪造,但需要足够长的观察窗口。

三层判据的可靠性对比

判据层 伪造难度 典型绕过方式 建议权重
凭据层 高(需要真凭据) 凭据泄露、共享 高,但只适用于已接入鉴权的接口
环境层 高(需改协议栈) 无头内核、真实浏览器驱动 高,作为主要打分依据
行为层 最高(需模拟真人) 慢速分布式、真人打码 中高,需要观察窗口
来源层(IP/UA) 低 代理池、UA 伪造 低,只作辅助信号

来源层(IP、User-Agent、Referer)几乎是所有团队最先想到、也最不可靠的一层:UA 一行就能改,Referer 由客户端控制,而家庭宽带与移动网络是共享出口。把 IP 当主判据,必然同时产生高误杀和高漏过。

一个可落地的判定顺序

1. 先放行已验证的好 Bot。 主流搜索引擎有可验证的反向 DNS 与公开的抓取声明,验证后加入允许列表;合作伙伴与健康检查走独立令牌或固定出口 IP。这一步的意义是把噪声从判定样本里剔除,后面的阈值才能收紧。

2. 凭据校验。 有令牌就验令牌,没有令牌的请求直接进入下一层判定,而不是直接拒绝。

3. 环境指纹打分。 用边缘采集的信号输出自动化置信度。这一步是主力,但它给出的是概率,不是结论。

4. 行为分析补位。 对中分区域的请求延长观察:请求节奏、端点组合、会话完整性。让可疑流量自己暴露。

5. 分级处置,而不是二选一。

分级处置矩阵

判定区间 处置方式 说明
已验证好 Bot 放行 + 单独计量 仍要记录消耗,避免合作方失控
低可疑 放行 + 记录 保留样本用于回看
中可疑 无感挑战 / 降级 / 排队 优先用无感验证,不打断正常用户
高可疑 显式挑战 确认是真人后放行并短期记住结果
明确恶意 拒绝 / 限速 / 拉黑 只针对持续且可归因的来源封禁

中分区间是收益最大的地方:直接拒绝会误杀,直接放行会漏过,用「无感挑战或降级」处理,两个错误都不犯。

边界与不适用情况

  • 依赖长尾爬虫的 SEO不要一刀切拦截未知 UA,先按行为与消耗分级;误杀新抓取器等于放弃新渠道的收录。
  • 已授权但超量的合作方属于配额问题而不是 Bot 问题,用配额与告警处理,不要靠挑战解决。
  • 隐私合规限制了指纹采集范围时,应提高凭据层与行为层的权重,而不是完全依赖环境指纹。

FAQ

Bot Score 该按多少分拦截? 不要全局定一个死阈值。先按端点分组看分数分布:登录、领额度、生成类接口各自定阈值,因为不同接口的误杀代价完全不同。

误伤了搜索引擎爬虫怎么办? 把它们加入允许列表而不是调低整体阈值。后者等于为了放行爬虫而把恶意流量也放进来,是典型的本末倒置。

为什么加了 JS 挑战还是被刷? 因为高级自动化会用真实浏览器内核执行 JS。JS 挑战挡的是脚本直连,不是无头浏览器;这一层要和环境指纹、行为分析叠加才有意义。

无头浏览器能完全识别吗? 不能。识别的目标是抬高攻击者的工程成本,让它规模化不划算。接受「有少量漏过」,把精力放在限额、降级和成本熔断上,比追求完美识别更实际。

← 返回文章列表

Cloudflare 官方合作伙伴

正在为海外业务做架构决策?

企业版选型、架构咨询、风险评估——把你的场景告诉我们,我们给出可落地的方案和路径。

作为 Cloudflare 合作伙伴,我们可以为你提供:

预约咨询