You need to enable JavaScript to run this app.
导航
高级频次控制
最近更新时间:2025.11.19 15:45:57首次发布时间:2025.11.19 14:39:15
复制全文
我的收藏
有用
有用
无用
无用

高级频次控制是火山引擎内容分发网络(CDN)提供的一项安全功能,用于精准地管理和控制客户端的访问行为。通过配置频次控制策略,可以有效识别和拦截异常的高频请求,从而抵御盗刷、DDoS 攻击等恶意行为,保障业务的稳定运行。

要使用高级频次控制,请 提交工单

每个域名支持配置 3 条策略,主账号下最多可以配置 200 条策略。一条策略由匹配规则、统计规则和处置规则三部分组成。

  • 匹配规则:定义需要进行频率统计的请求特征。
  • 统计规则:定义统计的维度、周期和阈值。
  • 处置规则:定义当请求频率达到阈值后 CDN 需要执行的动作。

本文将指导您如何通过控制台配置策略。
Image

策略执行逻辑

当一个请求同时满足多条频次控制策略的匹配规则时,系统会遵循以下逻辑执行:

  1. 独立统计:每条被匹配的策略都会根据自身的统计规则,独立地对请求进行计数。
  2. 阈值触发:当某条策略的请求计数值达到设定的阈值时,该策略中的处置规则会被触发。
  3. 处置执行
  • 如果一个请求触发了多条策略,系统会根据策略的优先级来决定最终执行哪一条策略的处置规则。优先级高的策略会优先生效。
  • 一旦某条策略被触发并执行了“拦截”类型的处置动作,其他策略将不再继续对请求进行计数。
  • 如果被触发的策略配置的处置动作是“观察”或“JavaScript 挑战”,其他策略会继续对请求进行计数。

操作步骤

步骤一:创建策略

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 流量安全
  3. 流量安全 页面,点击 高级频次控制 标签页。
  4. 高级频次控制 标签页上,点击 新增
  5. 关联域名 列表中选择该策略需要关联的域名,然后设置策略的优先级。

Image

步骤二:添加匹配规则

匹配规则用于定义需要进行频率统计的请求所具备的特征。一个策略中最多可以添加 5 条匹配规则。当存在多条匹配规则时,规则之间的默认逻辑关系为 且(AND)。点击 添加匹配规则,然后根据以下说明设置规则:

匹配字段

说明

可指定的逻辑符

忽略大小写选项

文件全路径

表示请求 URL 中的路径。

等于、不等于

支持

文件目录

表示路径中的一个目录。

等于、不等于

支持

文件后缀

表示路径末尾的扩展名。

等于、不等于

支持

全路径正则

表示请求 URL 中的路径,通过正则表达式匹配。

匹配、不匹配

不支持

Query Name

表示请求 URL 中的某个查询参数。您需要指定查询参数的名称。

等于、不等于、为空、不为空、存在、不存在

支持

Query String

表示请求 URL 中的查询字符串,通过正则表达式匹配。查询字符串不包含开头的 ?

匹配、不匹配

不支持

请求方法

客户端发起请求时使用的 HTTP 方法。可选项包括 GETPOSTDELETEPUTHEADPATCHCONNECTOPTIONS

等于、不等于

不支持

User-Agent 头部

表示请求中 User-Agent 头部。

等于、不等于、为空、不为空、存在、不存在

支持

自定义请求头部

表示请求中的某个头部。您需要指定头部的名称。

等于、不等于、为空、不为空

支持

客户端 IP

表示客户端的 IP 地址。

等于、不等于

不支持

客户端 IP(优先匹配 XFF 头部)

表示客户端的 IP 地址。如果请求中存在 X-Forwarded-For,则优先使用该头部值中的第一个 IP 地址作为客户端 IP。

等于、不等于

不支持

JA3 指纹

表示在 TLS 握手过程中 CDN 生成的客户端指纹信息。

等于、不等于

不支持

步骤三:配置统计规则

统计规则定义了如何对满足匹配规则的请求进行计数。一个策略只能包含一条统计规则。请根据以下说明设置规则:

配置

说明

统计对象

表示统计的对象,有以下选项:

  • 客户端 IP:表示基于客户端的 IP 地址统计请求的数量。
  • 客户端 IP(优先匹配 XFF 头部):表示优先从 X-Forwarded-For 头部值中获取第一个 IP 地址进行统计。
  • 自定义请求头部:表示基于指定头部的值进行统计。
  • JA3 指纹:表示基于客户端的 JA3 指纹进行统计。

统计时长

表示统计请求数量的时间窗口。取值范围是 1 秒至 3600 秒。例如,统计时长设置为 60 秒,表示系统会以 60 秒为一个周期,持续统计周期内的请求数量。

统计阈值

表示在统计时长内允许的请求数量上限。当请求数量超过此阈值时,将触发处置规则。取值范围是 1 至 50000。

统计时段

表示策略生效的每日时间段。您可以指定一个具体的时间范围,例如 08:00 - 18:00。如果设置为 00:00 - 23:59,则表示全天生效。

统计指定状态码

表示只对特定响应状态码的请求进行计数。您可以输入具体的状态码,例如 404,或者使用 4xx5xx 这样的范围表示。最多可以输入 50 个状态码,使用回车分隔。

步骤四:配置处置规则

处置规则定义了当请求数量达到阈值后,CDN 需要对后续的新请求执行的操作。请根据以下说明设置规则:

配置

说明

处置范围

表示 处置动作 的应用范围。可选的范围有:

  • 统计对象的全部请求:表示对统计对象达到阈值条件的新请求执行处置动作,无论请求是否满足匹配规则。
  • 统计对象满足匹配规则的请求:表示对统计对象达到阈值条件,并且满足匹配规则的新请求执行处置动作。

示例
假设策略的配置如下:

  • 匹配规则:文件全路径为 /test
  • 统计规则:统计对象为自定义请求头部 header,统计阈值为 100。
  • 处置动作:拦截。

在业务场景中,CDN 收到包含 header: value 头部的请求数达到 100。接着又收到两个包含 header: value 头部的新请求。请求1 的路径为/test,请求2 的路径为 /helloworld

在这个场景下:

  • 如果 处置范围统计对象的全部请求,则这两个请求都会被阻止。
  • 如果 处置范围统计对象满足匹配规则的请求,只有请求1 会被阻止。

处置动作

表示具体的处置操作。可选的操作有:

  • 观察:表示不执行任何拦截操作,仅记录相关事件。
  • 拦截:表示阻止新请求的访问。
  • JavaScript 挑战:表示向客户端返回一个包含 JavaScript 代码的重定向页面。客户端需要成功执行页面中的 JavaScript 代码才能通过验证并继续访问。此操作可以有效识别不具备 JavaScript 执行能力的客户端,例如自动化脚本或 DDoS 攻击工具。
  • 拦截统计窗口内剩余请求:仅在当前统计周期的剩余时间内阻止新请求。下一个统计周期开始时,请求计数将清零,请求的访问恢复正常。

处置时长

表示 处置动作 的持续时间,取值范围是 1 秒至 86400 秒。处置时长结束后,请求计数将清零。

处置动作拦截统计窗口内剩余请求,该配置不会出现。

状态码

表示当 处置动作 为拦截时,CDN 向客户端返回的 HTTP 状态码。取值范围是 400 至 499。

响应页面

表示当 处置动作 为拦截时,CDN 向客户端返回的自定义响应页面的内容。

JavaScript 挑战使用说明

在以下场景中,不建议使用 JavaScript 挑战:

  • 非浏览器客户端:如果客户端是移动应用(App)或通过 API 调用资源,这些客户端通常无法执行 JavaScript 代码,会导致请求被误拦截。
  • 请求特定资源类型:如果客户端通过 Accept 头部明确要求非 HTML 类型的资源(例如 image/jpegapplication/json),JavaScript 挑战返回的 HTML 页面会导致类型不匹配,从而使挑战失败。

附录:配置输入要求

匹配字段

输入要求

文件全路径

  • 每个路径都必须以 / 开头,不能包含空格,长度不超过 300 个字符。
  • 支持使用通配符 *,例如 /test/*.jpg
  • 最多输入 20 个路径,以回车分隔。

文件目录

  • 根目录表示为 /,其他目录必须以 / 开头和结尾,例如 /test/
  • 每个目录的长度不超过 300 个字符,不能包含空格。
  • 最多输入 20 个目录,以回车分隔。

文件后缀

  • 每个后缀只能包含字母和数字,长度不超过 50 个字符。例如 jpg
  • 最多输入 20 个后缀,以回车分隔。

全路径正则

  • 每个正则表达式的长度不能超过 300 个字符。
  • 最多输入 20 个正则表达式,以回车分隔。

Query Name

参数名称

  • 长度不超过 100 个字符。
  • 可以包含字母,数字,下划线(_),连字符(-),句点(.)。

参数值

  • 每个参数值的长度不超过 100 个字符,不能包含空格。
  • 最多输入 20 个参数值,以回车分隔。

Query String

  • 每个正则表达式的长度不超过 100 个字符。
  • 最多输入 20 个正则表达式,以回车分隔。

User-Agent 头部

  • 每个头部值的开头和结尾可以使用通配符 *,但头部值不能仅为 *,长度不超过 100 个字符。
  • 最多输入 20 个头部值,以回车分隔。

自定义请求头部

头部名称

  • 长度不超过 100 个字符。
  • 可以包含字母,数字,下划线(_),连字符(-),句点(.)。

头部值

  • 每个头部值的开头和结尾可以使用通配符 *,但头部值不能仅为 *,长度不超过 100 个字符。
  • 最多输入 20 个头部值,以回车分隔。

客户端 IP

  • 支持 IPv4、IPv6 或 CIDR 格式。
  • 最多输入 20 个 IP 地址,以回车分隔。

JA3 指纹

  • 每个 JA3 指纹的长度不超过 100 个字符。
  • 最多输入 20 个 JA3 指纹,以回车分隔。