cf_clearance cookie 向 Cloudflare 证明访客是经过验证的真人,并已通过 Cloudflare 的客户端验证。
该 cookie 包含两种相互配合的 clearance(通过证明):
- Challenge clearance(质询通过证明):当访客解决质询(例如,插页式质询页面或启用了预先证明的 Turnstile)时授予。
- Precursor clearance(Precursor 通过证明):根据会话行为不断更新。
该 cookie 安全地与发行它的特定访客和设备绑定,防止跨机器重复使用。
作为额外的安全层,Cloudflare 建议客户基于 cf_clearance cookie 值添加速率限制规则。这有助于确保单个有效的 cookie 不会被一台机器滥用来发送过量的请求。
质询通过证明在访客成功完成质询时授予。
每种质询类型都会设置一个证明级别。较高等级的证明会绕过所有该级别或更低级别的质询。较低等级的证明仅绕过相同级别的质询。
| Clearance level(证明级别) | Bypasses(绕过) |
|---|---|
| Interactive(交互式,高) | 交互式、托管式和非交互式质询(Interactive、Managed 和 Non-Interactive Challenges) |
| Managed(托管式,中) | 托管式和非交互式质询(Managed 和 Non-Interactive Challenges) |
| Non-Interactive(非交互式,低) | 仅非交互式质询(Non-Interactive Challenges only) |
如果访客通过了交互式质询(最高安全级别),只要该证明仍然有效,他们就可以绕过所有其他质询。
如果访客获得了较低级别的证明(托管式或非交互式),并在稍后遇到较高级别的质询,他们必须再次解决该较高级别的质询。
如果稍后解决较高级别的质询,最初的证明将被替换。
质询通过证明在客户配置的持续时间(质询通过期)内保持有效,除非 Precursor 确定该会话存在可疑情况。
Precursor 通过证明在整个访客会话期间受到持续重新评估。它不依赖于单个质询事件,而是作为一项持续进行的客户端过程,定期重新评估行为。随着观察到新的信号,证明会动态更新,以反映当前对会话的信任水平。
如果 Precursor 确定某会话存在可疑情况:
- 访客有效的质询通过证明可能被降级或无效化。
- 访客可能被重新质询,即使 cookie 尚未过期。
这创建了一种模型,即证明既受时间约束(时效性)也受行为约束(Precursor)。
Turnstile 中的 **Pre-clearance(预先证明)**允许网站通过使用 cf_clearance cookie 来优化用户体验。基于客户设置的安全证明级别,cf_clearance cookie 使访客能够在随后的所有该区域请求(包括 API 请求)中绕过 WAF 质询。这对于受信任的访客特别有用,可以在保持安全性的同时提高可用性。
默认情况下,当访客通过小组件解决质询时,Turnstile 会向他们发放一次性使用令牌。您必须通过对 Siteverify API 发起服务器端调用来验证该令牌。
| 质询类型 | 发放的证明 |
|---|---|
| Challenge Page(质询页面) | cf_clearance cookie(默认) |
| Turnstile widget(Turnstile 小组件) | Token(令牌)(默认) cf_clearance cookie(可选附加) |
当您在 Turnstile 上启用预先证明支持时,除了默认的 Turnstile 令牌外,还会向访客发放一个 cf_clearance cookie。
您可以允许 Turnstile 向您的访客发放 cf_clearance cookie 作为预先证明,从而集成 Cloudflare Challenges。使用 Turnstile API 的 clearance_level 在创建小组件或修改小组件时设置预先证明级别。该配置的可能值为:
interactivemanagedjschallengeno_clearance
所有小组件默认将预先证明模式设为 false,安全证明级别设为 no_clearance。
对于符合启用无任何预配置主机名的小组件条件的企业客户,Cloudflare 建议在指定了至少一个主机名且该主机名与您想集成 Turnstile 的区域相同的小组件上发放预先证明 cookie。
请参考博客文章 ↗了解关于预先证明如何与 WAF 配合工作的更多详细信息。
Interactive(交互式,高) interactive
允许具有通过证明 cookie 的用户不受到非交互式质询、托管质询或交互式质询防火墙规则的质询。
Managed(托管式,中) managed
允许具有通过证明 cookie 的用户不受到非交互式质询或托管质询防火墙规则的质询。
Non-Interactive(非交互式,低) jschallenge
允许具有通过证明 cookie 的用户不受到非交互式质询防火墙规则的质询。
由 Turnstile 小组件生成的通过证明 cookie 将在区域级别 **Challenge Passage(质询通过期)**值所指定的时间内有效。要配置 **Challenge Passage(质询通过期)**设置,请参考质询通过期。
要启用预先证明,您必须确保 Turnstile 小组件的主机名与具有 WAF 规则的区域匹配。在 Cloudflare 仪表板中进行 Turnstile 配置设置期间,您可以访问已注册的区域列表。从此列表中选择适当的主机名。
此先决条件对于预先证明正常运作至关重要。如果设置正确,成功解决 Turnstile 的访客将获得具有客户设定安全证明级别的 cookie。当在同一区域遇到 WAF 质询时,他们将绕过对配置的证明级别及更低级别的其他质询。
有关管理主机名的更多细节,请参考主机名管理文档。
-
在 Cloudflare 仪表板中,转到 Turnstile。
Go to Turnstile ↗ -
选择 Add widget(添加小组件)。
-
在 **Would you like to opt for pre-clearance for this site?(是否为此站点选择预先证明?)**下,选择 Yes(是)。
-
选择一个 pre-clearance level(预先证明级别)。
-
选择 Create(创建)。
-
在 Cloudflare 仪表板中,转到 Turnstile。
Go to Turnstile ↗ -
选择一个现有的小组件,然后打开 Settings(设置)。
-
在 **Would you like to opt for pre-clearance for this site?(是否为此站点选择预先证明?)**下,选择 Yes(是)。
-
选择一个 pre-clearance level(预先证明级别)。
-
选择 Update(更新)。