⭐ 推荐:社区规则条款 V1.0

用 Cloudflare 防采集规则怎么配置?

满月居于空
满月居于空 版主萌新站长
发布于 2026-10-16 02:12 ·2 浏览 ·2 回复
内容摘要

Cloudflare 防采集需三层配置:先启用 Bot Fight Mode、Browser Integrity Check、安全级别 Medium,再用 WAF 自定义规则组合弱特征并优先放行合法爬虫,最后对高频路径限速并用托管质询兜底。

Cloudflare 防采集不能只靠一条 UA 黑名单,正确配置是三层组合:Bot 管控层(Bot Fight Mode / Super Bot Fight Mode)负责拦已知自动化工具,WAF 自定义规则层负责按条件精准拦截,速率限制层(Rate Limiting)负责压制高频抓取,最后用托管质询(Managed Challenge)兜底误伤。只写一条「拦截 python-requests」的规则,任何换个 UA 的采集器都能绕过。

Cloudflare 防采集先开哪几个开关?

结论:先把免费就有的三个开关打开——Bot Fight Mode、Browser Integrity Check、Security Level 设为 Medium,这三个改完不用写一行表达式就能挡掉大部分无脑爬虫。

入口都在控制台的 Security 分类下:Bots 页面开 Bot Fight Mode(免费计划可用,只有开/关两档);Settings 页面勾选 Browser Integrity Check,它会拦掉 UA 或请求头明显异常的流量;Security Level 设为 Medium,会提高访客的威胁评分阈值触发质询。

「I'm Under Attack」模式不要常开。它会给每个访客先展示一个 5 秒的 JS 挑战页,正常用户和搜索引擎都会被拖慢,只适合被打爆的那几小时临时开。同理,质询优先选 Managed Challenge 而不是 Block,它会自动在非交互式挑战和交互式 CAPTCHA 之间选择,误伤真人的概率最低。

WAF 自定义规则怎么写才能拦住采集器?

结论:自定义规则的写法是「多个弱特征组合成一个强条件」,单条件拦截必然误伤或被绕过。免费计划提供 5 条自定义规则,Pro 20 条、Business 100 条,以控制台 Custom rules 页面显示的剩余条数为准。

第一条,拦空 UA 和脚本 UA,动作选 Managed Challenge:

(lower(http.user_agent) contains "python") or
(lower(http.user_agent) contains "scrapy") or
(lower(http.user_agent) contains "curl") or
(lower(http.user_agent) contains "go-http-client") or
(http.user_agent eq "")

第二条,拦「无 Referer + 直连列表接口」的组合,这类流量基本是直接扒数据不是正常浏览:

(http.request.uri.path contains "/api/list" and http.referer eq "")

第三条,白名单要放在规则列表最前面,动作用 Skip,跳过后续所有规则:

(cf.client.bot eq true)

cf.client.bot 是 Cloudflare 基于反向 DNS 验证过的合法爬虫标识,Googlebot、Bingbot 都在列表里。规则按列表从上到下评估,白名单放后面等于没写。

速率限制的阈值设多少合适?

结论:速率限制要绑定单条高频路径而不是全站,计数周期选 10 秒,动作选 Managed Challenge,别一上来就 Block。免费计划提供 1 条 Rate Limiting 规则,Pro 2 条起。

一条可直接用的配置:特征选择 IP,路径匹配 /api/,计数周期 10 秒,阈值 30 次,缓解时长 1 分钟。列表页、搜索接口这类重查询路径阈值可以压到 10 次/10 秒,详情页放到 60 次/10 秒。

动作千万别选 Block。国内大量用户走 CGNAT 共享出口 IP,一个小区可能几十人同一个地址,直接封会让整片人打不开页面。托管质询能拦住脚本但放过真人。

怎么避免把 Googlebot 一起封掉?

结论:只要用了 UA 特征匹配,就必须配套放行已验证爬虫,否则 Search Console 会在几天内冒出大量抓取错误。

除了上面那条 cf.client.bot eq true 的 Skip 规则,还要对 /robots.txt、/sitemap.xml 这类路径单独放行。判断误伤的信号很直接:Search Console 的抓取统计里错误率飙升、已收录页面数连续一周下降。

上线节奏上,新规则先跑 3 到 7 天再收紧。免费版没有 Log 动作(那是 Business 及以上才有),替代办法是动作先用 Managed Challenge 观察——真人是能点过去的,脚本过不去,安全事件页面里能看到命中记录。

只靠 Cloudflare 够不够?

结论:不够。Cloudflare 拦的是网络层特征,绕过它只需要一个能跑无头浏览器的代理池,最后一道墙必须放在服务端和内容层。

三个成本低效果好的补充手段:一是在页面里埋一个 display:none 的蜜罐链接,正常用户点不到,爬虫会跟着抓,命中就拉黑;二是把价格、库存这类核心数据改成带签名和 5 分钟时效 token 的异步接口,静态 HTML 里拿不到真数据;三是在应用层做账号维度和 session 维度的限流,比 IP 限流难绕过得多。

配置时踩得最多的坑是 Bot Fight Mode 不能被 WAF 的 Skip 规则绕过——它独立于 WAF 规则链运行,如果你的 API 需要放行服务器到服务器的调用,得升级到 Super Bot Fight Mode(Pro 计划起)才有细粒度开关。免费版遇到冲突,只能关掉 Bot Fight Mode 改用自定义规则。

一句话收尾:Cloudflare 负责挡掉 90% 的低成本爬虫,剩下的 10% 要靠蜜罐、异步接口和服务端限流联手处理;规则永远先放行已验证爬虫、先用质询代替封禁、先跑够 3 天再收紧。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2151.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 2

chinaz
chinaz 初级会员萌新站长 1楼 2026-10-16 02:35

先把 Skip 白名单放在自定义规则列表的最上面,速率限制留到最后一层再配——这两步顺序搞反,后面写再多规则都是白搭。

零成本起步的顺序是:Bots 页开 Bot Fight Mode,Settings 里勾 Browser Integrity Check、Security Level 调到 Medium,这三步不用写任何表达式就能挡掉大部分扫描器。然后才轮到 WAF 自定义规则,注意规则是从上到下逐条评估的,(cf.client.bot eq true) 这条 Skip 必须排第一,放后面等于没写。UA 匹配记得整体套 lower(),采集器把 User-Agent 写成「Python-Requests」就能绕开大小写敏感的写法。

速率限制免费计划只有 1 条,别浪费在全站上,挑最容易被扒的路径(列表接口、搜索页、详情页)单独绑。计数周期 10 秒,同 IP 超过 15~20 次触发 Managed Challenge,先跑一周日志再决定收不收紧。动作优先选 Managed Challenge 而不是 Block,Block 是硬拦截,真人被误杀没有任何挽回余地,质询至少还给人过一次验证的机会。

两个容易忽略的坑:Bot Fight Mode 会连正当的 API 调用方一起拦,有开放接口的要单独放行;cf.client.bot 只覆盖通过反向 DNS 验证的搜索引擎爬虫,一些 RSS 阅读器、监控探针不在列表里,需要自己补白名单。I'm Under Attack 也别常开,它给每个访客先压 5 秒 JS 挑战,正常流量和搜索引擎会一起变慢。

萝卜特棒
萝卜特棒 正式会员萌新站长 #1999 2楼 2026-10-16 02:51
chinaz:先把 Skip 白名单放在自定义规则列表的最上面,速率限制留到最后一层再配——这两步顺序搞反,后面写再多规则都是白搭。 零成本起步的顺序是:Bots 页开 B…

顺序这一点确实是最容易翻车的,不过补一句:Skip 光拖到第一行还不够,动作里得勾对要跳过的组件。

Cloudflare 的 Skip 动作是可以分组件勾选的——剩余自定义规则、速率限制规则、托管规则、Security Level 都是独立项。很多人只把 (cf.client.bot eq true) 放到第一行就不管了,结果搜索引擎爬虫照样被速率限制层或者 Medium 级别的威胁评分拦下来。正确做法是把「All remaining custom rules」和「Rate limiting rules」一起勾上,站点有 API 路径的话,Security Level 也建议一并跳过,否则中等安全级别对没有浏览器指纹的第三方客户端照样会弹质询。

另外两个坑得提醒一下。第一,免费版的 Bot Fight Mode 是全站硬开关,官方明确说明无法被 WAF 的 Skip 跳过,所以开放接口的站点在免费版下要么关掉它、要么升级到 Super Bot Fight Mode 才能配例外规则,chinaz 说的「单独放行」在免费版实际做不到。第二,免费版 Custom Rules 没有 Log 动作(企业版才有),所谓「先跑一周日志」只能靠 Security Events 的事件流去看命中情况,规则动作先统一挂 Managed Challenge 最稳妥。

阈值方面可以再分细一点:列表接口 15 次/10 秒偏紧,详情页这种带缓存的可以放到 30 次,搜索页反而要最严,因为它是采集器最爱打的入口。

真要对付代理池,免费版手段有限,只能靠组合路径 + 频率 + cf.threat_score,JA3 指纹是 Pro 以上才有的能力。