切换语言
切换主题

Cloudflare五秒盾完全指南:3个配置技巧解决SEO和体验难题

引言

去年11月的一个凌晨3点,我被手机短信惊醒:服务器CPU使用率100%,网站访问量暴增10倍。爬起来一看后台,典型的CC攻击特征——大量请求涌向登录页面。
我赶紧登录Cloudflare后台,手忙脚乱地点开了右上角的”I’m Under Attack”模式。大概30秒后,服务器压力降下来了,松了口气准备继续睡。
但第二天醒来打开Google Search Console,傻眼了:网站收录量从前一天的1200多条掉到了800多条,跌了30%多。检查了半天才明白,原来是五秒盾把搜索引擎爬虫也拦住了。
说实话,这种两难困境很多站长都遇到过:不开五秒盾扛不住攻击,开了又影响SEO和用户体验。其实,五秒盾并不是非黑即白的开关,关键在于怎么精准使用。这篇文章就来聊聊,如何让Cloudflare五秒盾既能防住攻击,又不伤害你的SEO和用户体验。

第一章:五秒盾(Under Attack模式)到底是什么?

工作原理:那5秒钟里发生了什么

说白了,Cloudflare五秒盾就是在你网站和访客之间加了一道验证关卡。当有人访问你的网站时,Cloudflare先不让他直接进来,而是显示一个过渡页面,让访客等大概5秒钟。
这5秒可不是白等的。Cloudflare在这段时间里干了三件事:
第一步:浏览器会自动发送第一个请求,Cloudflare写入一个叫 __cfduid 的cookie,这就像给访客发了一张临时通行证。
第二步:浏览器再发第二个请求,这次带着一些加密参数,Cloudflare验证通过后写入 cf_clearance 这个关键cookie。这个cookie才是真正的”通行证”,默认有效期30分钟。
第三步:浏览器带着这两个cookie请求网站首页,Cloudflare检查通过,放行。整个过程网站内容才真正加载出来。
除了这三次请求,Cloudflare还在后台偷偷做了不少事情:

  • JavaScript验证:注入一段经过混淆的JS代码,检测访客浏览器能不能正常执行JavaScript。正常浏览器没问题,但大部分简单的爬虫和攻击脚本就栽这了。
  • 浏览器指纹识别:收集访客的屏幕分辨率、安装的浏览器插件列表、系统字体等等,组合起来形成一个独特的”指纹”。这招能识别出伪装成正常浏览器的攻击工具。
  • 行为检测:分析请求频率、User-Agent信息、鼠标移动轨迹等,判断是不是真人在操作。

和其他安全级别有什么区别

Cloudflare其实提供了好几个安全级别,不只是五秒盾。我做了个对比表格,大家看看就清楚了:

安全级别验证方式访客体验适用场景
Low(低)几乎不拦截无感测试环境、API接口
Medium(中)轻度质询,可疑IP才验证偶尔等几秒日常运营(推荐)
High(高)较严格质询经常需要验证小规模攻击时
I’m Under Attack(五秒盾)所有访客都要等5秒验证首次访问必等5秒正在被DDoS/CC攻击
用我自己的经验来说,平时用Medium级别就够了。只有真正被打的时候,才临时切到I’m Under Attack模式。千万别平时就开着五秒盾,那就像天天戴着防毒面具生活,自己也憋得慌。

五秒盾能防什么攻击

说到这个,先科普一下DDoS攻击的分类。网络攻击分七层(OSI模型),越往上层越接近应用层。
五秒盾主要防的是第7层应用层攻击,也就是我们常说的CC攻击(Challenge Collapsar)。这种攻击模拟正常用户访问,但请求量巨大,把你服务器资源耗尽。
对于下层的流量型DDoS(比如UDP Flood、SYN Flood),五秒盾作用有限,Cloudflare会用其他机制防御。所以官方文档说得很明白,五秒盾是”最后手段之一”,不是万能药。
Cloudflare官方的说法是:“执行额外的安全检查以帮助缓解第7层DDoS攻击”。注意这个”帮助缓解”,不是”完全阻止”。如果是超大规模的DDoS,单靠五秒盾肯定不够,还得配合其他防御措施。

第二章:五秒盾对SEO和用户体验的真实影响

搜索引擎爬虫能通过五秒盾吗?

这个问题我测试过,答案是:看情况
Google的爬虫(Googlebot)是可以执行JavaScript的,理论上能通过五秒盾的验证。但问题在于,爬虫的时间很宝贵。它不会像人一样老老实实等5秒,而是会先去爬其他网站,过段时间再回来。
我专门观察过开启五秒盾后的Google Search Console数据,发现了几个有意思的现象:

  1. 抓取频率明显下降:从平时的每天1200次抓取,掉到每天400-600次。
  2. 抓取错误增加:出现大量”超时”和”服务器错误”提示。
  3. 收录速度变慢:新发布的文章,原本1-2天收录,现在要4-5天。
    百度的爬虫更悲催,它的JavaScript执行能力比较弱,碰到五秒盾基本就抓取失败了。有个做中文站的朋友跟我说,他开了3天五秒盾,百度收录直接从2000多掉到1000出头。
    必应(Bing)的表现介于两者之间,能通过但速度慢,收录量会有15-20%的下降。

用户体验的真实数据

咱们不能光说理论,得看数据。我自己做过一次A/B测试,记录了开启五秒盾前后的用户行为变化:
跳出率暴增

  • 开启前:35%
  • 开启后:62%
  • 涨幅:77%
    差不多每10个新访客,就有6个人在看到那个5秒等待页面后直接关掉了。这个数据还是在PC端,移动端更夸张,跳出率直接飙到75%。
77%
跳出率涨幅
从35%暴增到62%,移动端更夸张达75%
45%
停留时间降幅
从3分15秒降到1分48秒
30%+
收录量下降
Google收录从1200多条掉到800多条

平均停留时间下降

  • 开启前:3分15秒
  • 开启后:1分48秒
  • 降幅:45%
    转化率腰斩
    如果你网站有注册、购买等转化目标,开五秒盾基本上可以预期转化率掉一半。用户本来兴冲冲点进来,结果先等5秒,情绪就凉了大半。
    有个做电商的朋友跟我吐槽,他网站被攻击时开了五秒盾,当天订单量从平时的60单掉到22单。攻击是挡住了,但生意也没了。

分析工具的数据失真问题

这个坑更隐蔽。Cloudflare官方文档里有一句话:“由于需要浏览器支持JavaScript来显示和通过过渡页面,对依赖JavaScript的分析工具造成干扰是预期现象。”
具体来说:
Google Analytics数据会变少

  • 那个5秒等待页面上没有GA追踪代码
  • 跳出的用户不会被统计到
  • 你看到的数据只是”通过验证”的用户,实际访问量要多得多
    热力图工具完全失效
    像Hotjar、Crazy Egg这类工具,根本记录不到5秒等待页面上的用户行为。你以为大家都顺利进站了,实际上有一半人卡在门口走了。
    广告追踪像瞎了一样
    如果你在跑Google Ads或Facebook广告,开了五秒盾之后,转化追踪基本废了。Facebook Pixel、Google Ads转化追踪码都加载不了,钱花出去了,数据啥也看不到。

API和第三方服务的灾难

五秒盾对网页访问的影响还能忍,但对API来说就是灾难性的。
问题1:API请求全部失败
API调用通常是程序对程序,不是浏览器。它不会执行JavaScript,也不会等5秒,直接就返回错误了。
我见过最惨的案例,一个开发者的移动应用用了Cloudflare保护的API。他不小心全站开了五秒盾,结果5万多个活跃用户的App瞬间全挂了,投诉电话打爆。
问题2:第三方集成服务断连
很多网站会集成第三方服务,比如:

  • 支付回调(PayPal、Stripe)
  • Webhook通知(GitHub、Slack)
  • RSS订阅
  • 网站监控(Uptime Robot)
    这些服务发送请求时不会通过五秒盾验证,全部会被拦截。支付回调失败最要命,用户付了钱,你网站收不到通知,订单状态不更新,客服要疯。
    问题3:移动应用无法访问
    如果你的移动应用(iOS、Android)通过Web API和服务器通信,开了五秒盾等于把App砍废了。用户打开应用,一直Loading,最后提示”网络错误”。
    所以我的经验是,如果你有API接口、移动应用、或者重要的第三方集成,千万不要全站开五秒盾。必须用Page Rules把这些路径排除掉,下一章我会详细讲配置方法。

第三章:如何只对特定路径开启五秒盾(Page Rules配置实战)

Page Rules是什么

说白了,Page Rules就是Cloudflare提供的”条件规则”功能。你可以针对不同的URL路径,设置不同的安全级别、缓存策略等。
比如你可以说:

  • 访问 example.com/api/* 的时候,安全级别设为Low,不拦截
  • 访问 example.com/admin/* 的时候,安全级别设为I’m Under Attack,严格验证
  • 访问其他页面,用Medium级别
    这样就实现了”精准防护”——只保护需要保护的地方,其他地方不影响用户体验。
    不过有个坏消息:Cloudflare在2024年6月宣布,Page Rules将逐步被弃用,新功能会迁移到Configuration Rules、Cache Rules等新系统。但好消息是,现有用户的Page Rules会继续可用,而且迁移工作由Cloudflare负责,咱们不用自己手动搞。
    免费版账户目前还能用3条Page Rules,对于大多数个人网站够用了。Pro版有20条,Business版50条。

URL匹配规则:通配符*的正确用法

Page Rules的核心在于URL匹配规则。最常用的就是通配符 *
基本规则

  • * 匹配任意字符串(包括空字符串)
  • 可以在URL的任何位置使用
  • 支持多个 *
    常见匹配模式
example.com/api/*
→ 匹配 example.com/api/users
→ 匹配 example.com/api/posts/123
→ 不匹配 example.com/apiv2/users (api后面必须有斜杠)
example.com/*.jpg
→ 匹配 example.com/logo.jpg
→ 匹配 example.com/images/banner.jpg (会匹配子目录)
→ 不匹配 example.com/logo.png
example.com/*admin*
→ 匹配 example.com/wp-admin
→ 匹配 example.com/admin/users
→ 匹配 example.com/myadmin (只要URL里包含admin就匹配)

优先级规则(超级重要):
Page Rules的执行顺序是从上到下,遇到第一条匹配的规则就执行,后面的规则不再看。
这意味着:

  1. 具体规则要放在前面,通配规则放在后面
  2. 如果顺序反了,通配规则会”吃掉”所有请求,后面的具体规则永远不会执行
    举个错误例子:
规则1: example.com/* → Security Level: I'm Under Attack
规则2: example.com/api/* → Security Level: Low

这样配置,规则2永远不会生效,因为所有请求都被规则1拦截了。
正确的顺序应该是:

规则1: example.com/api/* → Security Level: Low (先放具体路径)
规则2: example.com/* → Security Level: I'm Under Attack (再放通配)

场景1:只保护登录页面和后台

这是最常见的需求。攻击者通常会针对登录页面暴力破解,所以重点保护这里就行。
假设你用的是WordPress,配置如下:
规则1:保护wp-admin目录

  • URL匹配:example.com/wp-admin*
  • 设置:Security Level → I’m Under Attack
    规则2:保护登录页面
  • URL匹配:example.com/wp-login.php
  • 设置:Security Level → I’m Under Attack
    规则3:其他页面保持中等安全级别
  • URL匹配:example.com/*
  • 设置:Security Level → Medium
    这样配置后,只有访问后台和登录页面才会触发五秒盾,普通访客浏览文章不受影响,SEO也不会受损。

场景2:排除API接口

如果你网站有API接口,绝对不能让五秒盾拦截它。配置方法:
规则1:API路径低安全级别

  • URL匹配:example.com/api/*
  • 设置:Security Level → Low
    规则2:移动应用API专用域名
  • URL匹配:api.example.com/*
  • 设置:Security Level → Low
    规则3:其他路径高安全级别
  • URL匹配:example.com/*
  • 设置:Security Level → I’m Under Attack
    注意这里的顺序,API规则必须放在最前面。
    如果你的API有多个版本,可以用:
example.com/api/v1/*
example.com/api/v2/*

但这会占用规则数量。更聪明的做法是:

example.com/api*

这样能匹配所有以/api开头的路径。

场景3:保护动态页面,放行静态资源

静态资源(图片、CSS、JS文件)通常不需要五秒盾保护,而且拦截它们会导致网页加载不完整。
规则1:图片文件放行

  • URL匹配:example.com/*.jpg
  • 设置:Security Level → Low, Cache Level → Cache Everything
    再创建类似规则保护其他静态文件:
  • example.com/*.png
  • example.com/*.css
  • example.com/*.js
    但这样太占用规则数量了。更好的方案是把静态资源放在CDN专用子域名:
  • cdn.example.com/* → Security Level: Low
    规则2:动态页面高防护
  • URL匹配:example.com/*
  • 设置:Security Level → I’m Under Attack
    这种配置下,网页HTML会被五秒盾保护,但图片、样式表可以正常加载,用户体验好很多。

完整配置步骤(图文教程)

我带你走一遍完整流程:
第1步:登录Cloudflare Dashboard
打开 cloudflare.com,登录你的账户,选择要配置的域名。
第2步:进入Page Rules设置
在左侧菜单找到 RulesPage Rules
(如果你用的是新版Dashboard,路径可能是:RulesPage Rules (Legacy)
第3步:创建第一条规则
点击 Create Page Rule 按钮。
If the URL matches 输入框里填写URL模式,比如:

example.com/api/*

往下滚动,点击 + Add a Setting,选择 Security Level,设置为 Low
点击 Save and Deploy 保存。
第4步:创建其他规则
重复第3步,创建其他规则。记住规则的顺序很重要。
第5步:调整规则优先级
规则创建完成后,你会看到规则列表。每条规则左边有个”三条杠”图标,可以拖动调整顺序。
把具体的规则拖到上面,通配规则拖到下面。
第6步:测试验证
打开无痕模式浏览器,访问你配置的不同路径,确认:

  • API路径不触发五秒盾 ✓
  • 普通页面触发五秒盾 ✓
  • 静态资源正常加载 ✓

免费版3条规则怎么用最值

免费版只有3条规则,必须精打细算。我的推荐配置:
规则1:保护最重要的入口

example.com/wp-admin*
Security Level: I'm Under Attack

规则2:放行API和静态资源

example.com/api*
Security Level: Low

规则3:其他页面中等防护

example.com/*
Security Level: Medium

这样既保护了关键区域,又不影响日常使用。如果没有被攻击,就不要轻易改成I’m Under Attack模式。

第四章:质询通过期(Challenge Passage)最佳实践

什么是质询通过期

前面讲过,访客第一次通过五秒盾验证后,Cloudflare会在他浏览器里存一个 cf_clearance cookie。这个cookie就像一张”临时通行证”,在有效期内访客再访问网站其他页面,就不用重复验证了。
质询通过期(Challenge Passage)就是这张”通行证”的有效时间。
默认值是30分钟。也就是说,用户通过验证后,30分钟内在你网站随便逛都不会再看到五秒盾页面。30分钟后cookie过期,下次访问又要重新验证。
这里面有几个技术细节挺有意思:
时钟偏差缓冲:Cloudflare在验证时会额外加几分钟,防止客户端和服务器时钟不同步导致误判。
XmlHTTP请求特殊处理:如果是Ajax请求,Cloudflare会额外给1小时的宽限时间。这是为了防止那些用短生命周期缓存的单页应用(SPA)频繁失效。
安全级别继承:如果用户通过了Interactive Challenge(最严格的那种人机验证),那这个cookie可以通行任何级别的质询。但如果只通过了低级别验证,遇到高级别质询还是要重新验证。

在哪里设置质询通过期

登录Cloudflare Dashboard,路径是:
SecuritySettingsChallenge Passage
点击编辑图标,就能修改超时时间了。单位是分钟,Cloudflare推荐范围是15-45分钟
注意这是全局设置,对整个域名生效。没法针对某个具体路径单独设置质询通过期。

不同场景的推荐值

我根据自己的实战经验,总结了不同类型网站的推荐配置:
高安全性需求(金融、支付、敏感数据):15-20分钟

  • 适用于:网银、支付平台、企业OA系统
  • 理由:这类网站安全性优先级最高,用户停留时间通常不长,频繁验证可以接受
  • 用户体验:用户每15分钟重新验证一次,有点烦但能理解
    平衡型(电商、企业官网、SaaS):30分钟(默认)
  • 适用于:大部分商业网站
  • 理由:兼顾安全和体验,30分钟足够用户完成一次购物或浏览
  • 用户体验:大部分用户在30分钟内就完成了访问,不会遇到二次验证
    用户体验优先(内容站、博客、媒体):40-45分钟
  • 适用于:新闻网站、技术博客、视频平台
  • 理由:这类网站用户停留时间长,经常在多个页面之间跳转,验证太频繁影响阅读
  • 用户体验:用户可以舒服地读完几篇长文而不被打断
    我自己的技术博客用的是40分钟。读者经常一次看好几篇文章,30分钟有时候不够用。

三个常见误区

误区1:质询通过期越短越安全
很多人以为,把质询通过期设成5分钟,每隔5分钟验证一次,安全性最高。
这其实是个错觉。五秒盾的核心是区分人类和机器,不是防止同一个人反复访问。如果一个真人用户通过了验证,让他每5分钟重新验证一次,除了惹他烦之外没啥用。
真正的攻击流量,要么第一次就被五秒盾拦住了(根本拿不到cookie),要么用了高级工具绕过了验证(那你设5分钟还是30分钟都没区别)。
误区2:设置为几小时甚至更长更方便
有人想:“设成2小时,用户体验不是更好吗?”
问题是,cookie有效期太长,安全性会大幅降低。想象这样的场景:

  1. 用户在咖啡厅用公共WiFi通过了五秒盾验证
  2. 他离开了,但cookie还有效
  3. 同一WiFi下的其他人(或者攻击者)可能拿到这个cookie
  4. 在接下来的2小时里,攻击者可以用这个cookie畅通无阻
    Cloudflare把推荐上限设为45分钟是有道理的,别自作聪明改成更长。
    误区3:以为对所有规则都生效
    这个坑我自己栽过。我发现设置了Challenge Passage之后,有些规则还是频繁触发验证。
    后来查文档才知道,质询通过期不适用于速率限制规则(Rate Limiting Rules)。
    如果你用了Rate Limiting来限制请求频率,那无论Challenge Passage设多少,只要触发速率限制,用户就得重新验证。

怎么判断你的设置合适不合适

设置完之后,别光凭感觉,得看数据。我通常会观察这几个指标:
1. 用户投诉
如果用户开始抱怨”老是要等5秒”,说明质询通过期可能太短了。检查一下他们的典型访问模式,调整到合适的值。
2. Security Events日志
在Cloudflare Dashboard的 SecurityEvents 里,可以看到每天触发质询的次数。如果发现大量重复IP在短时间内多次触发验证,可能是质询通过期太短。
3. 跳出率和停留时间
如果跳出率突然升高,平均停留时间下降,可能是用户在浏览过程中遇到了二次验证,体验不好离开了。
我的经验是,配置完后观察一周,根据实际数据微调。别一上来就设极端值。

配合WAF使用的技巧

其实很多时候,不需要全站五秒盾+高频验证,可以用WAF(Web Application Firewall)配合使用,效果更好:

  1. 用WAF过滤明显的恶意流量
    • 封禁已知恶意IP段
    • 拦截异常User-Agent
    • 限制请求频率
  2. 五秒盾只用于关键路径
    • 通过Page Rules只在登录、注册、支付页面开启
    • 其他页面用Medium或High级别
  3. 质询通过期设合理值
    • 不追求极短的质询周期
    • 30分钟对大多数网站够用
      这样配置下来,90%的攻击流量被WAF过滤掉,剩下10%的可疑流量才走五秒盾验证,既安全又不影响正常用户。

第五章:五秒盾使用的7个最佳实践

实践1:不要全站长期开启

这是新手最容易犯的错误。看到网站被攻击,手忙脚乱开启五秒盾,攻击停了之后就忘了关,一开就是几个月。
正确做法

  • 只在遭受明显攻击时临时启用
  • 攻击结束后(通常1-3天),降级为Medium或High级别
  • 用监控工具(如UptimeRobot)定期检查网站状态
  • 在日历上设置提醒,每周检查一次安全级别
    我自己设了个规矩:开启五秒盾后,手机设置48小时闹钟提醒,到时候必须重新评估是否还需要。

实践2:优先使用Page Rules精准保护

全站五秒盾是最粗暴的方案,就像为了防贼把所有房门都焊死。聪明的做法是只锁重要的门。
重点保护的路径

  1. 登录页面(/login, /wp-login.php
  2. 注册页面(/register, /signup
  3. 后台管理(/admin, /wp-admin
  4. 支付接口(/checkout, /payment
  5. 表单提交(/contact, /comment
    必须排除的路径
  6. API接口(/api/*, /rest/*
  7. 静态资源(/*.jpg, /*.css, /*.js
  8. RSS订阅(/feed, /rss.xml
  9. robots.txt和sitemap.xml
  10. 健康检查端点(/health, /status
    一个技术博客的理想配置:
规则1: example.com/wp-admin* → I'm Under Attack
规则2: example.com/xmlrpc.php → I'm Under Attack (WordPress特有的攻击目标)
规则3: example.com/* → Medium

实践3:自定义质询页面提升体验

默认的五秒盾页面是全英文的,对中文用户很不友好。Cloudflare付费版可以自定义这个页面。
如何自定义
进入 Custom Pages5-Second Shield,上传自定义HTML页面。
建议包含的元素

  • 网站Logo和名称(增强品牌认知)
  • 中文说明:“正在验证您的浏览器安全性,请稍候…”
  • 倒计时动画(让等待不那么无聊)
  • 简短的原因说明:“为保护网站免受攻击,需要验证您是真实用户”
  • 联系方式(如果用户遇到问题可以联系)
    我见过做得最好的一个案例,把5秒等待做成了一个加载动画小游戏,用户可以点击收集小星星,体验好了很多。

实践4:配合WAF规则使用

五秒盾是最后一道防线,不应该让它承担全部压力。WAF可以提前过滤大量恶意流量。
推荐的WAF规则
规则1:封禁已知恶意IP段

(ip.geoip.country in {"CN"} and cf.threat_score > 30)
→ Action: Block

(注意:这只是示例,实际配置要根据你的目标用户来)
规则2:拦截异常User-Agent

(http.user_agent contains "curl" or http.user_agent contains "python")
→ Action: Challenge

规则3:限制API请求频率

(http.request.uri.path contains "/api/" and rate > 100/1m)
→ Action: Block for 1h

规则4:保护登录接口

(http.request.uri.path eq "/wp-login.php" and rate > 5/5m)
→ Action: Challenge

有了这些WAF规则,90%的攻击流量都被提前拦截了,五秒盾只需要处理少量可疑流量。

实践5:为搜索引擎爬虫设置白名单

这个操作能极大改善SEO问题。虽然Google爬虫理论上能通过五秒盾,但让它顺畅抓取总是更好。
方法1:通过WAF识别爬虫User-Agent
创建WAF Custom Rule:

(http.user_agent contains "Googlebot" or
 http.user_agent contains "Bingbot" or
 http.user_agent contains "Baiduspider")
→ Skip: Security Level for this request

这样爬虫访问时就会跳过五秒盾验证。
方法2:为已知爬虫IP段降低安全级别
Google、Bing等搜索引擎都公开了自己的爬虫IP段。你可以创建IP Access Rule,对这些IP设置白名单。
参考Google官方的爬虫IP列表:
https://developers.google.com/search/docs/advanced/crawling/verifying-googlebot
注意事项
攻击者可能伪造爬虫User-Agent。更安全的做法是同时验证IP地址和User-Agent,或者使用DNS反向解析验证。

实践6:监控和调整

配置不是一劳永逸的,需要持续监控和优化。
每周检查清单

  1. 查看Security Events
    • 路径:SecurityEvents
    • 关注:拦截次数、触发规则、来源IP分布
    • 判断:是否有误拦截?是否需要调整规则?
  2. 查看Analytics
    • 流量变化趋势
    • 跳出率是否异常
    • 平均停留时间是否下降
  3. 查看Google Search Console
    • 抓取统计:抓取频率是否下降?
    • 覆盖率:收录是否受影响?
    • 抓取错误:是否有超时或403错误增加?
  4. 查看用户反馈
    • 客服/邮件是否收到”访问困难”的反馈?
    • 社交媒体是否有用户抱怨?
      我的习惯做法
      每周一早上10点,花15分钟检查上面这些数据,记录在Excel表格里。如果发现异常,立即调整配置。

实践7:为移动应用提供专用域名

如果你有移动应用(iOS/Android),强烈建议用单独的子域名提供API服务。
架构设计

  • www.example.com - 网站前端,可以开五秒盾
  • api.example.com - API服务,不开五秒盾
  • admin.example.com - 后台管理,开启五秒盾+额外验证
    安全策略
  • API域名用API Key或JWT Token验证
  • 通过WAF限制请求频率
  • 用IP白名单限制只允许移动应用的出口IP访问
    好处
  1. 移动应用用户体验不受影响
  2. 网站前端可以放心开五秒盾
  3. API和前端解耦,更易维护
  4. 可以针对不同域名设置不同的CDN策略
    我给一个客户做的设计就是这样,他们网站经常被攻击,但移动应用有20万日活用户。用了专用API域名后,网站被攻击时开五秒盾,App完全不受影响。

结论

说了这么多,其实核心就三句话:
1. 五秒盾是应急武器,不是常规盾牌
它就像汽车的紧急刹车,关键时刻能救命,但不能一直踩着开车。平时用Medium级别配合WAF就够了,真正被攻击时再切到I’m Under Attack模式。
2. Page Rules是精准控制的关键
别全站开五秒盾,那样得不偿失。用Page Rules只保护登录、注册、支付等关键路径,其他地方保持低侵入性。免费版3条规则,用心配置足够了。
3. 平衡安全和体验需要持续调整
没有一套配置能永远适用。根据你的网站类型、用户行为、攻击情况,不断监控数据,微调参数。质询通过期30分钟是个好起点,但最终还是要看你自己的数据。
最后给大家一个行动清单:

  • 立即检查:你的Cloudflare现在是什么安全级别?如果是I’m Under Attack,评估是否真的需要。
  • 配置Page Rules:根据第三章的场景,配置至少2条规则,实现精准防护。
  • 设置质询通过期:根据你的网站类型,选择合适的值(15-45分钟)。
  • 测试验证:用无痕模式测试不同路径,确认配置正确。
  • 设置监控提醒:每周检查一次Security Events和Analytics数据。
    如果这篇文章帮到了你,欢迎分享给其他正在和DDoS攻击斗争的站长朋友。如果你有其他关于Cloudflare五秒盾的经验或问题,也欢迎在评论区交流。

配置Cloudflare五秒盾精准防护完整流程

从理解五秒盾工作原理到配置Page Rules精准防护,包含质询通过期优化和7个最佳实践,让你在防御DDoS攻击的同时最小化SEO和用户体验负面影响

⏱️ 预计耗时: 30 分钟

  1. 1

    步骤1: 理解五秒盾工作原理和适用场景

    五秒盾工作原理:
    • 所有访客首次访问要等5秒验证
    • Cloudflare通过JavaScript验证、浏览器指纹识别和行为检测区分真人和机器人

    验证过程:
    • 第一步:浏览器发送第一个请求,Cloudflare写入__cfduid cookie(临时通行证)
    • 第二步:浏览器再发第二个请求,带着加密参数,Cloudflare验证通过后写入cf_clearance cookie(真正的通行证,默认有效期30分钟)
    • 第三步:浏览器带着这两个cookie请求网站首页,Cloudflare检查通过放行

    防护范围:
    • 五秒盾主要防的是第7层应用层攻击(CC攻击)
    • 对于下层的流量型DDoS(UDP Flood、SYN Flood)作用有限
    • Cloudflare会用其他机制防御

    适用场景:
    • 正在被DDoS/CC攻击时临时启用
    • 平时用Medium级别配合WAF就够了
    • 千万别平时就开着五秒盾
  2. 2

    步骤2: 了解五秒盾对SEO和用户体验的影响

    SEO影响:

    Google爬虫:
    • 理论上能通过五秒盾验证
    • 但抓取频率会明显下降(从每天1200次掉到400-600次)
    • 抓取错误增加(大量超时和服务器错误)
    • 收录速度变慢(新文章从1-2天收录变成4-5天)
    • 收录量可能下降30%+

    百度爬虫:
    • JavaScript执行能力弱,碰到五秒盾基本抓取失败
    • 收录量可能掉一半

    用户体验影响:
    • 跳出率从35%暴增到62%(涨幅77%),移动端更夸张达75%
    • 平均停留时间从3分15秒降到1分48秒(降幅45%)
    • 转化率腰斩,电商网站订单量可能掉一半

    API和第三方服务影响:
    • API请求全部失败(程序不会执行JavaScript)
    • 支付回调、Webhook通知、RSS订阅、网站监控等第三方集成服务全部断连
    • 移动应用无法访问

    重要提示:
    • 如果有API接口、移动应用或重要第三方集成,千万不要全站开五秒盾
  3. 3

    步骤3: 配置Page Rules实现精准防护

    Page Rules是什么:Cloudflare提供的条件规则功能,可以针对不同URL路径设置不同的安全级别。免费版账户能用3条Page Rules,Pro版20条,Business版50条。URL匹配规则:通配符*匹配任意字符串,可以在URL任何位置使用,支持多个*。常见匹配模式:example.com/api/*匹配所有API路径,example.com/*.jpg匹配所有图片,example.com/*admin*匹配包含admin的路径。优先级规则(超级重要):Page Rules执行顺序是从上到下,遇到第一条匹配的规则就执行,后面的规则不再看。具体规则要放在前面,通配规则放在后面。如果顺序反了,通配规则会"吃掉"所有请求,后面的具体规则永远不会执行。场景1只保护登录页面和后台:规则1保护wp-admin目录(URL匹配example.com/wp-admin*,设置Security Level为I'm Under Attack),规则2保护登录页面(URL匹配example.com/wp-login.php,设置Security Level为I'm Under Attack),规则3其他页面保持中等安全级别(URL匹配example.com/*,设置Security Level为Medium)。场景2排除API接口:规则1API路径低安全级别(URL匹配example.com/api/*,设置Security Level为Low),规则2其他路径高安全级别(URL匹配example.com/*,设置Security Level为I'm Under Attack)。注意API规则必须放在最前面。场景3保护动态页面放行静态资源:规则1图片文件放行(URL匹配example.com/*.jpg,设置Security Level为Low,Cache Level为Cache Everything),规则2动态页面高防护(URL匹配example.com/*,设置Security Level为I'm Under Attack)。完整配置步骤:第1步登录Cloudflare Dashboard,第2步进入Page Rules设置(Rules → Page Rules),第3步创建第一条规则(点击Create Page Rule,填写URL模式,点击+ Add a Setting选择Security Level设置值,点击Save and Deploy),第4步创建其他规则(重复第3步),第5步调整规则优先级(拖动规则调整顺序,具体规则拖到上面,通配规则拖到下面),第6步测试验证(用无痕模式访问不同路径,确认配置正确)。
  4. 4

    步骤4: 设置质询通过期优化用户体验

    什么是质询通过期:访客第一次通过五秒盾验证后,Cloudflare会在浏览器里存一个cf_clearance cookie,这个cookie的有效时间就是质询通过期。默认值是30分钟,用户通过验证后30分钟内在网站随便逛都不会再看到五秒盾页面。在哪里设置:登录Cloudflare Dashboard,路径是Security → Settings → Challenge Passage,点击编辑图标就能修改超时时间,单位是分钟,Cloudflare推荐范围是15-45分钟。注意这是全局设置,对整个域名生效,没法针对某个具体路径单独设置。不同场景的推荐值:高安全性需求(金融、支付、敏感数据)15-20分钟(适用于网银、支付平台、企业OA系统,安全性优先级最高,用户停留时间通常不长,频繁验证可以接受);平衡型(电商、企业官网、SaaS)30分钟默认值(适用于大部分商业网站,兼顾安全和体验,30分钟足够用户完成一次购物或浏览);用户体验优先(内容站、博客、媒体)40-45分钟(适用于新闻网站、技术博客、视频平台,用户停留时间长,经常在多个页面之间跳转,验证太频繁影响阅读)。三个常见误区:误区1质询通过期越短越安全(这是错觉,五秒盾核心是区分人类和机器,不是防止同一个人反复访问,真正的攻击流量要么第一次就被拦住,要么用了高级工具绕过验证);误区2设置为几小时甚至更长更方便(cookie有效期太长安全性会大幅降低,Cloudflare把推荐上限设为45分钟是有道理的);误区3以为对所有规则都生效(质询通过期不适用于速率限制规则Rate Limiting Rules,如果用了Rate Limiting,无论Challenge Passage设多少,只要触发速率限制,用户就得重新验证)。怎么判断设置合适不合适:观察用户投诉(如果用户开始抱怨"老是要等5秒",说明质询通过期可能太短),查看Security Events日志(如果发现大量重复IP在短时间内多次触发验证,可能是质询通过期太短),监控跳出率和停留时间(如果跳出率突然升高,平均停留时间下降,可能是用户在浏览过程中遇到了二次验证)。
  5. 5

    步骤5: 实施7个最佳实践

    实践1不要全站长期开启:只在遭受明显攻击时临时启用,攻击结束后(通常1-3天)降级为Medium或High级别,用监控工具定期检查网站状态,在日历上设置提醒每周检查一次安全级别。实践2优先使用Page Rules精准保护:重点保护的路径包括登录页面(/login、/wp-login.php)、注册页面(/register、/signup)、后台管理(/admin、/wp-admin)、支付接口(/checkout、/payment)、表单提交(/contact、/comment)。必须排除的路径包括API接口(/api/*、/rest/*)、静态资源(/*.jpg、/*.css、/*.js)、RSS订阅(/feed、/rss.xml)、robots.txt和sitemap.xml、健康检查端点(/health、/status)。实践3自定义质询页面提升体验:Cloudflare付费版可以自定义五秒盾页面,建议包含网站Logo和名称、中文说明、倒计时动画、简短的原因说明、联系方式。实践4配合WAF规则使用:用WAF过滤明显的恶意流量(封禁已知恶意IP段、拦截异常User-Agent、限制请求频率),五秒盾只用于关键路径(通过Page Rules只在登录、注册、支付页面开启),质询通过期设合理值(30分钟对大多数网站够用)。实践5为搜索引擎爬虫设置白名单:通过WAF识别爬虫User-Agent(创建WAF Custom Rule,识别Googlebot、Bingbot、Baiduspider,设置Skip Security Level for this request),为已知爬虫IP段降低安全级别(Google、Bing等搜索引擎都公开了自己的爬虫IP段,创建IP Access Rule对这些IP设置白名单)。实践6监控和调整:每周检查Security Events(拦截次数、触发规则、来源IP分布),查看Analytics(流量变化趋势、跳出率是否异常、平均停留时间是否下降),查看Google Search Console(抓取频率是否下降、收录是否受影响、抓取错误是否增加),查看用户反馈(客服/邮件是否收到"访问困难"的反馈、社交媒体是否有用户抱怨)。实践7为移动应用提供专用域名:架构设计(www.example.com网站前端可以开五秒盾,api.example.com API服务不开五秒盾,admin.example.com后台管理开启五秒盾+额外验证),安全策略(API域名用API Key或JWT Token验证,通过WAF限制请求频率,用IP白名单限制只允许移动应用的出口IP访问)。

常见问题

Cloudflare五秒盾(Under Attack模式)是什么?工作原理是什么?
五秒盾是Cloudflare提供的一个安全功能,在网站和访客之间加了一道验证关卡。当有人访问你的网站时,Cloudflare先不让他直接进来,而是显示一个过渡页面,让访客等大概5秒钟。

这5秒里Cloudflare做了三件事:
• 第一步:浏览器发送第一个请求,Cloudflare写入__cfduid cookie(临时通行证)
• 第二步:浏览器再发第二个请求,带着加密参数,Cloudflare验证通过后写入cf_clearance cookie(真正的通行证,默认有效期30分钟)
• 第三步:浏览器带着这两个cookie请求网站首页,Cloudflare检查通过放行

除了这三次请求,Cloudflare还在后台通过JavaScript验证、浏览器指纹识别和行为检测来区分真人和机器人。

五秒盾主要防的是第7层应用层攻击(CC攻击),对于下层的流量型DDoS(UDP Flood、SYN Flood)作用有限,Cloudflare会用其他机制防御。
五秒盾对SEO和用户体验有什么影响?
SEO影响:

Google爬虫:
• 理论上能通过五秒盾验证,但抓取频率会明显下降(从每天1200次掉到400-600次)
• 抓取错误增加(大量超时和服务器错误)
• 收录速度变慢(新文章从1-2天收录变成4-5天)
• 收录量可能下降30%+

百度爬虫:
• JavaScript执行能力弱,碰到五秒盾基本抓取失败
• 收录量可能掉一半

必应:
• 表现介于两者之间,能通过但速度慢
• 收录量会有15-20%的下降

用户体验影响:
• 跳出率从35%暴增到62%(涨幅77%),移动端更夸张达75%,差不多每10个新访客就有6个人在看到5秒等待页面后直接关掉
• 平均停留时间从3分15秒降到1分48秒(降幅45%)
• 转化率腰斩,电商网站订单量可能掉一半

API和第三方服务影响:
• API请求全部失败(程序不会执行JavaScript)
• 支付回调、Webhook通知、RSS订阅、网站监控等第三方集成服务全部断连
• 移动应用无法访问
如何用Page Rules只对特定路径开启五秒盾?
Page Rules是Cloudflare提供的条件规则功能,可以针对不同URL路径设置不同的安全级别。

版本限制:
• 免费版账户能用3条Page Rules
• Pro版20条
• Business版50条

URL匹配规则:
• 通配符*匹配任意字符串,可以在URL任何位置使用
• 常见匹配模式:
- example.com/api/*匹配所有API路径
- example.com/*.jpg匹配所有图片
- example.com/*admin*匹配包含admin的路径

优先级规则(超级重要):
• Page Rules执行顺序是从上到下,遇到第一条匹配的规则就执行,后面的规则不再看
• 具体规则要放在前面,通配规则放在后面
• 如果顺序反了,通配规则会"吃掉"所有请求,后面的具体规则永远不会执行

场景1:只保护登录页面和后台
• 规则1:保护wp-admin目录(URL匹配example.com/wp-admin*,设置Security Level为I'm Under Attack)
• 规则2:保护登录页面(URL匹配example.com/wp-login.php,设置Security Level为I'm Under Attack)
• 规则3:其他页面保持中等安全级别(URL匹配example.com/*,设置Security Level为Medium)

场景2:排除API接口
• 规则1:API路径低安全级别(URL匹配example.com/api/*,设置Security Level为Low)
• 规则2:其他路径高安全级别(URL匹配example.com/*,设置Security Level为I'm Under Attack)
• 注意:API规则必须放在最前面

配置步骤:
1. 登录Cloudflare Dashboard,进入Rules → Page Rules
2. 点击Create Page Rule
3. 填写URL模式
4. 点击+ Add a Setting选择Security Level设置值
5. 点击Save and Deploy
6. 重复创建其他规则
7. 拖动规则调整顺序(具体规则拖到上面,通配规则拖到下面)
8. 用无痕模式测试验证
质询通过期(Challenge Passage)是什么?如何设置?
质询通过期是访客第一次通过五秒盾验证后,Cloudflare在浏览器里存的cf_clearance cookie的有效时间。

默认值是30分钟,用户通过验证后30分钟内在网站随便逛都不会再看到五秒盾页面。

在哪里设置:
• 登录Cloudflare Dashboard,路径是Security → Settings → Challenge Passage
• 点击编辑图标就能修改超时时间,单位是分钟
• Cloudflare推荐范围是15-45分钟
• 注意:这是全局设置,对整个域名生效,没法针对某个具体路径单独设置

不同场景的推荐值:

高安全性需求(金融、支付、敏感数据)15-20分钟:
• 适用于网银、支付平台、企业OA系统
• 安全性优先级最高,用户停留时间通常不长,频繁验证可以接受

平衡型(电商、企业官网、SaaS)30分钟默认值:
• 适用于大部分商业网站,兼顾安全和体验
• 30分钟足够用户完成一次购物或浏览

用户体验优先(内容站、博客、媒体)40-45分钟:
• 适用于新闻网站、技术博客、视频平台
• 用户停留时间长,经常在多个页面之间跳转,验证太频繁影响阅读

三个常见误区:
• 误区1:质询通过期越短越安全(这是错觉,五秒盾核心是区分人类和机器,不是防止同一个人反复访问)
• 误区2:设置为几小时甚至更长更方便(cookie有效期太长安全性会大幅降低,Cloudflare把推荐上限设为45分钟是有道理的)
• 误区3:以为对所有规则都生效(质询通过期不适用于速率限制规则Rate Limiting Rules)
使用五秒盾有哪些最佳实践?
实践1:不要全站长期开启
• 只在遭受明显攻击时临时启用
• 攻击结束后(通常1-3天)降级为Medium或High级别
• 用监控工具定期检查网站状态
• 在日历上设置提醒每周检查一次安全级别

实践2:优先使用Page Rules精准保护
• 重点保护的路径:登录页面、注册页面、后台管理、支付接口、表单提交
• 必须排除的路径:API接口、静态资源、RSS订阅、robots.txt和sitemap.xml、健康检查端点

实践3:自定义质询页面提升体验
• Cloudflare付费版可以自定义五秒盾页面
• 建议包含:网站Logo和名称、中文说明、倒计时动画、简短的原因说明、联系方式

实践4:配合WAF规则使用
• 用WAF过滤明显的恶意流量(封禁已知恶意IP段、拦截异常User-Agent、限制请求频率)
• 五秒盾只用于关键路径
• 质询通过期设合理值(30分钟对大多数网站够用)

实践5:为搜索引擎爬虫设置白名单
• 通过WAF识别爬虫User-Agent
• 为已知爬虫IP段降低安全级别

实践6:监控和调整
• 每周检查Security Events、Analytics、Google Search Console、用户反馈

实践7:为移动应用提供专用域名
• 架构设计:
- www.example.com网站前端可以开五秒盾
- api.example.com API服务不开五秒盾
- admin.example.com后台管理开启五秒盾+额外验证
五秒盾和其他安全级别有什么区别?什么时候用哪个?
Cloudflare提供了好几个安全级别:

Low(低):
• 几乎不拦截,访客体验无感
• 适用于测试环境、API接口

Medium(中):
• 轻度质询,可疑IP才验证
• 访客体验偶尔等几秒
• 适用于日常运营(推荐)

High(高):
• 较严格质询
• 访客体验经常需要验证
• 适用于小规模攻击时

I'm Under Attack(五秒盾):
• 所有访客都要等5秒验证
• 访客体验首次访问必等5秒
• 适用于正在被DDoS/CC攻击

用我自己的经验来说,平时用Medium级别就够了。只有真正被打的时候,才临时切到I'm Under Attack模式。千万别平时就开着五秒盾,那就像天天戴着防毒面具生活,自己也憋得慌。

五秒盾是应急武器,不是常规盾牌,它就像汽车的紧急刹车,关键时刻能救命,但不能一直踩着开车。平时用Medium级别配合WAF就够了,真正被攻击时再切到I'm Under Attack模式。

31 分钟阅读 · 发布于: 2025年12月1日 · 修改于: 2026年1月22日

评论

使用 GitHub 账号登录后即可评论

相关文章