什么是 Rate Limiting(速率限制)?|速率限制和机器人

速率限制可阻止过度使用或滥用Web 属性的用户、机器人或应用程序。速率限制可以阻止某些类型的机器人攻击。

学习目标

阅读本文后,您将能够:

  • 了解速率限制的目的
  • 了解速率限制的工作原理
  • 了解速率限制的一些实际应用
  • 阐释限速和其他类型的机器人管理之间的区别

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是速率限制?

道路旁限速标志上的限速 - 每分钟 75 个请求

速率限制是用于限制网络流量的策略。它限制了某人可以在特定时间范围内重复执行某操作的频率(例如,尝试登录一个帐户)。速率限制可以帮助阻止某些类型的恶意机器人活动。它还可以减少 Web 服务器上的压力。但是,速率限制不是管理机器人活动的完整解决方案。

通过速率限制可以阻止哪些类型的漫游器攻击?

速率限制通常用于防护恶意机器人对网站或应用程序产生负面影响。速率限制可以帮助防止的机器人攻击包括:

速率限制还可以防止 API 过度使用,虽然它不一定存在恶意或由机器人活动引起,但话虽如此,防止 API 过度使用依然非常重要。

限速如何运作?

速率限制在应用程序中运行,而不是在 Web 服务器本身运行。通常,速率限制追踪请求的来源 IP 地址以及每个请求之间经过多少时间。IP 地址是应用程序识别发出请求的人员或对象的主要方式。

速率限制解决方案测量每个IP地址发出的每个请求之间的时间,还会测量指定时间范围内的请求数量。如果在给定的时间内来自单个IP的请求太多,则限速解决方案将在一定时间内拒绝满足IP地址的请求。

本质上,受速率限制的应用程序会向正在快速发送请求的个别用户说"嘿,慢一点"。这相当于警察要求超速的驾驶员停靠路边,或者父母告诉孩子在这么短的时间内不要吃太多糖果。

什么是 IP 地址?

IP地址是分配给连接到互联网任何设备的唯一数字标识符(或在IPv6中为字母数字)。只要设备在线,每个设备都会拥有自己的IP地址,就像实际的街道地址或电话号码一样,这使设备能够来回发送消息。传统的(IPv4)地址如下所示:198.41.129.1

对于用户设备,IP地址通常不是永久不变的,因为IPv4中没有足够的IP地址。相反,用户的互联网服务提供商(ISP)将在设备连接到互联网时动态分配地址。

速率限制解决方案可以使用IP地址作为确定哪些设备发出过多请求的基础,进而会暂时将其阻止。

速率限制如何与用户登录一起使用?

如果用户尝试在短时间内进行过多次失败登录,则可能会发现自己的账户被锁定。当网站设置了登录速率限制,就会发生这种情况。

这种预防措施的存在,不是要为了挫败忘记密码的用户,而是阻止暴力攻击。暴力攻击是指机器人尝试数千个不同的密码,以猜测正确的密码并侵入帐户。如果机器人每小时只能进行 3 或 4 次登录尝试,则从统计上讲,此类攻击不太可能成功。

登录页面上的速率限制可以针对尝试登录的用户的IP地址或其用户名。理想情况下会采用两者的结合,因为:

  • 如果仅通过 IP 地址应用速率限制,则暴力攻击者可以通过尝试从多个 IP 地址登录(可能使用僵尸网络 )来绕过此限制。
  • 如果仅应用于用户名,那么拥有已知用户名列表的任何攻击者通过同一个IP地址可以使用这些用户名尝试各种常用密码,并且很可能成功闯入至少几个帐户,。

因为速率限制对于防止这些蛮力攻击是必要的,所以忘记密码的用户可能会与恶意机器人一起受到速率限制。用户可能会看到"太多的登录尝试"消息,并提示他们在指定的时间范围之后再次尝试,或者被告知他们完全被锁定在帐户之外。

速率限制如何用于API?

应用程序编程接口 (API) 是一种从程序请求功能的方法。API 对大多数用户是不可见的,但是对于应用程序正常运行而言,它们至关重要。例如,餐馆的网站可以依靠预订服务的 API 来让客户能够在线进行预订用餐。或者,电子商务平台可以整合运输公司的 API,为用户提供准确的运输成本。

每次API响应请求时,该API的所有者都必须为计算时间付费:这是表示码运行并产生对该API请求的响应所需的服务器资源。在上面的示例中,每当餐厅顾客进行预订时,餐厅的API集成将使表预订服务为计算时间收费。

因此,任何为开发人员提供 API 的应用程序或服务,都会限制每个唯一用户每小时或每天可以进行多少次 API 调用。通过这种方式来防止第三方开发人员过度使用 API。

速率限制还可以激励开发人员为利用API付出更多的费用:通常,他们为API服务付出的费用越高,能调用的API服务也就越多。

API的速率限制也有助于防御恶意的机器人攻击。攻击者可以使用机器人对API进行多次重复调用,从而使该服务无法提供给其他任何人,或者使服务完全崩溃。这是一种DoS或DDoS攻击。

X (Twitter) 和 Instagram 等社交媒体平台如何使用速率限制?

社交媒体平台的速率限制,通常类似于 API 速率限制。例如,任何集成 X(以前称之为 Twitter)的第三方应用程序每小时只能刷新一定的次数,以查找新帖子或消息。Instagram 对第三方应用程序也有类似的限制。这正是用户偶尔会遇到"超过了速率限制"消息的原因。

机器人管理和速率限制有什么区别?

速率限制基本上是一个维度:它虽然有用,但只能防止非常特定类型的机器人活动。此外,速率限制不仅适用于机器人,而且通常还用于用量限制。例如,Cloudflare Rate Limiting 可以抵御 DDoS 攻击、API 滥用和暴力攻击,但不一定能缓解其他形式的恶意机器人活动,也不能区分好善意器人和恶意机器人。

相比之下,机器人管理通常可以整体检测机器人活动。例如,Cloudflare 机器人管理使用机器学习来分辩相似的机器人,这使它能够阻止更广泛的各种机器人攻击(如凭据填充垃圾信息发布、库存囤积等)。小型组织还可以使用 Cloudflare Pro 和 Business 服务方案中提供的 Super Bot Fight 模式来阻止恶意机器人。