跳转到内容
搜索文档

等候室绕过规则

最后更新 查看 MarkdownAgent 设置

等候室绕过规则 (Waiting Room Bypass Rule) 是一种建立在 Cloudflare 规则集引擎之上并通过等候室 API 管理的等候室规则。等候室绕过规则允许您指示您不希望应用等候室的特定流量或您的站点或应用程序的区域。每个绕过规则都是在单个等候室级别创建和管理的,以便对您的等候室流量进行精确控制。

要指示您希望在何处应用您的绕过规则,请使用通过 Cloudflare 规则集引擎可用的字段编写自定义逻辑,但以下字段除外:

  • cf.threat_score 和以 cf.bot_management 开头的字段
  • HTTP 响应字段

请注意,等候室将不会应用于匹配为绕过规则编写的表达式的所有流量,并且不会被计算为活动用户。任何等候室功能,包括但不限于事件预排队 (Event pre-queueing)、拒绝排队方法 (Reject queueing method) 或全部排队 (Queue-all),都不会应用于此流量。在创建和启用绕过等候室规则时请注意这一点。仅对您确信不会淹没您的源站或导致流量大幅激增的流量使用绕过规则。

常见用例

  • 路径/URL 排除:如果您不希望等候室应用于这些路径,请绕过在您的等候室配置的路径下的特定路径或 URL。
  • 管理绕过:允许内部站点管理员始终绕过等候室,通常由 IP 地址标识。
  • 地理定位:排除某些国家/地区进行排队。
  • 查询字符串排除:排除在您的等候室配置的路径下的特定查询字符串。
  • 排除文件扩展名:防止等候室应用于某些文件扩展名,例如您在等候室 HTML 模板上使用的 .js,以便它们能正确渲染。

关于子请求的说明

除了您想要排除的查询字符串或路径外,请确保在您的表达式中包含子请求可能命中的任何路径或文件类型,以使这些资产或路径也不会应用等候室。否则,这些子请求将获得等候室 cookie,因为它们仍然被等候室覆盖。

这些可能包括图像、JavaScript 文件、CSS 文件等。您还可以通过绕过以 .js.css.png 等结尾的请求,将规则配置为绕过任何文件类型路径的等候室,这样您就不必手动配置这些资产可能存储在其下的每个路径。

示例条件:ends_with(http.request.uri.path, ".js")

在仪表板中创建等候室绕过规则

要创建新的绕过规则:

  1. 在 Cloudflare 仪表板中,转到 **Waiting Room(等候室)**页面。

    Go to Waiting Room ↗
  2. 展开一个等候室并选择 Manage rules(管理规则)

  3. 选择 Create new bypass rule(创建新绕过规则)

  4. 在 **Rule name(规则名称)**中为规则输入描述性名称。

  5. 在 **When incoming requests match(当传入请求匹配时)**下,定义规则表达式。使用 **Field(字段)**下拉列表选择一个 HTTP 属性。对于每个请求,将您为 Field(字段) 选择的属性值与您使用 **Operator(运算符)**中选择的运算符为 **Value(值)**指定的值进行比较。

  6. 在 **Then(然后)**下,将自动选择 Bypass Waiting Room(绕过等候室)操作。在保存之前,请检查您的表达式并确保匹配该表达式的流量是您不希望应用等候室的流量。

  7. 要保存并部署您的规则,请选择 Save and Deploy(保存并部署)。如果您尚未准备好部署您的规则,请选择 Save as Draft(保存为草稿)

运算符和分组符号

  • 比较运算符指定表达式中定义的值必须如何与表达式的实际 HTTP 请求值相关才能返回 true。
  • 逻辑运算符将两个表达式组合形成复合表达式,并使用优先级顺序来确定如何计算表达式。
  • 分组符号允许您组织表达式、强制执行运算符优先级并嵌套表达式。

有关示例和用法,请参阅规则语言文档中的运算符和分组符号

通过等候室 API 管理规则

您可以通过等候室 API管理、删除和创建您的等候室绕过规则。绕过规则是使用 bypass_waiting_room 操作的等候室规则。

通过 API 创建绕过等候室规则时,请确保您:

  • 已创建并保存了您希望规则应用于的等候室。
  • 定义表达式以指示您希望哪些流量绕过您的等候室。
  • 将规则操作设置为 bypass_waiting_room

通过将等候室 API 中的以下端点附加到 Cloudflare API 基本 URL 来创建等候室规则。新的等候室规则将添加到任何现有规则之后。

POST zones/{zone_id}/waiting_rooms/{room_id}/rules

使用以下必需和可选参数配置您的绕过规则:

  • Description(描述,可选)- 为您的规则提供描述以帮助记录此绕过规则的用途。
  • Expression(表达式,必需)- 定义规则表达式,指示将绕过规则应用于哪些流量。
  • Action(操作,必需)- 定义当表达式计算为 true 时要采取的操作。将此设置为 bypass_waiting_room
  • Enabled(启用,可选)- 这将默认为 true。如果您不希望部署您的规则,您必须将其设置为 false。

API 示例

绕过您等候室下的路径及其所有子路径

如果您的等候室配置在 example.com/,并且您希望所有访问 example.com/bypassme 及其所有子路径的流量绕过。在这个例子中,我们还想确保任何 jscsspng 的子请求也绕过等候室,以确保所有资产都在被绕过的路径上正确加载。请注意,在此示例中,所有以 jscsspng 结尾的请求都将绕过等候室,无论子路径是什么。如果这不是您的预期用例,请更改表达式以满足您的特定要求和站点架构。

Create Waiting Room Rulebash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "subpath bypass",
		"expression": "starts_with(http.request.uri.path, \"/bypassme\") or ends_with(http.request.uri.path, \".js\") or ends_with(http.request.uri.path, \".css\") or ends_with(http.request.uri.path, \".png\")",
		"action": "bypass_waiting_room"
	}'

允许定义的 IP 列表绕过等候室

Create Waiting Room Rulebash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "ip list bypass",
		"expression": "ip.src in $bypass_ip_list",
		"action": "bypass_waiting_room"
	}'

其他用于管理绕过规则的 API 选项

通过等候室 API,您还可以使用等候室规则 API 调用执行以下操作来管理绕过规则:

  • 列出等候室规则:列出等候室的规则。
  • 替换等候室规则:替换等候室的所有规则。
  • 修补等候室规则:更新等候室的规则。
  • 删除等候室规则:删除等候室的规则。

这篇文档对您有帮助吗?