网络威胁与对策

机器人 (Bot)

约 5 分钟阅读

什么是机器人

机器人 (Bot) 是无需人工操作即可自动执行任务的软件程序的统称,源自「Robot」的缩写。Web 流量中约有一半来自机器人。

机器人既有搜索引擎爬虫和客服聊天机器人等有益的类型,也有用于数据抓取和非法登录的恶意类型。对网站运营者而言,在接受良性机器人的同时排除恶性机器人,是安全和用户体验两方面的重要课题。

良性机器人的种类与作用

良性机器人是支撑互联网基础设施的重要存在。

  • 搜索引擎爬虫: Googlebot、Bingbot 等遍历网页构建搜索索引。遵循 robots.txt 规则,尊重网站运营者设定的爬取限制。
  • 聊天机器人: 利用自然语言处理自动化客户支持和常见问题解答。可 24 小时提供服务,降低人力成本。
  • 监控机器人: 定期检查网站运行状态、响应时间和 SSL 证书有效期等,检测到异常时发送警报。
  • Feed 爬虫: 遍历 RSS 源和新闻网站收集内容更新,用于新闻聚合器和社交媒体预览生成。

良性机器人通常通过 User-Agent 头部正确标识自身并遵守 robots.txt。但恶性机器人可能伪造良性机器人的 User-Agent,因此需要通过 IP 地址的反向 DNS 查询来验证其合法性。

恶性机器人的威胁

恶性机器人被用于多种攻击,对网站和服务造成严重损害。

  • 抓取机器人: 自动大量收集价格信息、内容和个人数据。被竞争对手用于监控电商价格,也被用于未经授权的内容转载。
  • 凭证填充: 使用泄露的账户信息列表,对多个服务进行自动登录尝试。密码重复使用是扩大损害的主要原因。
  • 垃圾信息机器人: 在评论区、联系表单和社交媒体上大量发布垃圾信息。用于 SEO 垃圾 (嵌入非法链接) 和钓鱼网站引导。
  • 抢购机器人: 在限量商品和活动门票开售时大量购买用于转售牟利,导致普通消费者无法购买。
  • DDoS 攻击机器人: 作为僵尸网络的一部分,向目标服务器发送大量请求使服务瘫痪。

恶性机器人日益高级化,有些使用无头浏览器模拟人类浏览行为,有些利用机器学习突破 CAPTCHA

机器人检测技术

为检测和阻止恶性机器人,通常组合使用多种技术。

通过图像识别或简单谜题区分人类和机器人。reCAPTCHA v3 在后台分析行为,无需用户操作。但 CAPTCHA 农场和机器学习突破仍是挑战。
行为分析
分析鼠标移动、滚动模式、按键节奏和页面停留时间,判断行为是否像人类。机器人通常表现出直线鼠标移动和等间隔点击等机械化模式。
速率限制
限制来自同一 IP 地址或会话的请求频率。阻止短时间内发送大量请求的机器人的基本措施。通过 WAF 或反向代理实现。
JavaScript 挑战
要求执行 JavaScript,过滤无法运行脚本的简单机器人。同时验证浏览器环境特征 (DOM 结构、API 可用性) 以检测无头浏览器。
设备指纹识别
应用浏览器指纹技术检测来自同一设备的大量访问。即使更换 IP 地址,指纹匹配也能识别同一机器人。

单一检测技术无法完全阻止高级机器人。多层组合方法最为有效,Cloudflare Bot Management 和 AWS WAF Bot Control 等托管服务承担着这一角色。

与僵尸网络的关系

许多恶性机器人并非独立运作,而是作为被称为僵尸网络的大规模网络的一部分运行。僵尸网络由数千到数百万台感染恶意软件的设备组成,在攻击者的指令下统一行动。

单个机器人被设计为不被设备所有者察觉,仅在收到攻击指令时才活动。它们作为 DDoS 攻击、大规模垃圾邮件发送和凭证填充等大规模攻击的执行基础设施被滥用。

从网站运营者的角度来看,僵尸网络的访问来自大量不同的 IP 地址,呈分散式分布,简单的基于 IP 的封锁难以应对。行为分析和设备指纹识别等不依赖 IP 地址的检测方法变得至关重要。

常见误解

所有机器人都是恶意的
Web 流量中约有一半来自机器人,但其中许多是搜索引擎爬虫和监控机器人等对互联网正常运行不可或缺的良性机器人。封锁良性机器人会导致无法被搜索引擎收录等不良后果。
安装 CAPTCHA 就能完全防御机器人
CAPTCHA 作为基本措施是有效的,但可以通过 CAPTCHA 农场 (人工代解) 和机器学习来突破。对付高级机器人需要组合行为分析、速率限制和设备指纹识别等多种技术的多层防御。
robots.txt 可以完全阻止机器人
robots.txt 只是一种「请求」,没有法律强制力。良性机器人会遵守 robots.txt,但恶性机器人会忽略它。阻止恶性机器人需要 WAF 和速率限制等技术手段。
分享

相关术语