本文适用于 Cloudflare Pro计划的网站, 一些规则/功能在Free版本中可能不适用.
本文的规则和设置是基于我的个人网站调整的, 如果要应用在自己的网站上, 可以参考相关规则的解释自行调整.
1.安全设置
A.创建白名单规则
后续的规则和设置可能会挑战或阻止合法爬虫, 因此首先创建绕过规则
如图所示, 创建白名单规则. 允许已经通过Cloudflare验证的爬虫. 同时允许来自Cloudflare Observatory的流量.
完整表达式:(cf.client.bot) or (ip.src.asnum eq 15169 and http.user_agent eq "Mozilla/5.0 (Linux; Android 11; Moto G Power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36") or (ip.src.asnum eq 15169 and http.user_agent eq "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36") or (ip.src.asnum eq 396982 and http.user_agent eq "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36 CloudflareObservatory/1.0") or (ip.src.asnum eq 396982 and http.user_agent eq "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 CloudflareObservatory/1.0")
设置的操作如图.
B.挑战/阻止可疑请求
WAF规则
理论上Pro用户无需创建自己的UA判断规则. 因为已经有了Super Bot Fight Mode与托管规则, 已经可以对不常见/自动程序的UA和TLS指纹识别并阻止. 因此这里只对一些标头进行简单的判断.
如图所示, 该WAF规则质询存在不常见浏览器环境.
操作选择交互式质询(当然托管质询也可以, 但是我个人更喜欢交互式质询), 本规则需要放在白名单规则后.
可选设置: 质询所有新访问者
Super Bot Fight Mode中的JavaScript Detections会自动注入访问者的页面中, 并填充cf_clearance cookie. 因此我们可以判断浏览器是否携带此cookie来质询所有的新访问者.
创建图中的WAF规则, 可以质询所有的新访问者.
速率限制规则
转到速率限制规则, 根据自己的需求限制请求速度. 这里做个示范,
打开网站, F12, 绕过缓存刷新一次. 可以看到一次完整的访问大概需要多少个请求
我的网站一次访问需要33次请求. 我假设用户在10秒内会多次刷新/访问我的网站. 因此最终限制为33×5=165.
可选设置: 账号爆破限制
自动化爆破通常会使用被泄漏的凭据进行爆破尝试, 利用Cloudflare自带的凭据检查, 可以直接在限速规则上进行拦截.
托管规则
转到托管规则,选择托管规则集, 创建以下例外:
这会阻止没有/空UA的请求.
DDoS代替
转到旁边的DDoS保护, 创建一个DDoS 替代规则.
规则集操作选择阻止, 规则集敏感度可以自行选择, 默认为高. 因此建议不用修改.
修改图中的规则, 也可以根据自己的需求自行调整.
安全设置
转到安全性下的设置, 向下滑动:
超级自动程序攻击模式:
按图中的设置进行修改, 此功能聊胜于无. 大部分恶意自动化程序已经可以获得较高的bot score.
泄露凭据检测
设置为开
质询通过期
根据自己的需求设置有效期, 我设置的是30分钟.
2.速度优化
速度
设置
通常情况下, 可以启用全部的优化. 如果你的网站有用JS进行页面渲染的逻辑, 谨慎使用Rocket Loader. 或者根据Rocket Loader的教程为js脚本添加豁免. 否则有可能会出现页面渲染失败的情况.
Smart Shield
启用Smart Tiered Cache.
缓存
Cache Rules
创建图中的新规则,
完整表达式: (http.request.uri.path.extension in {"7z" "avi" "avif" "apk" "bin" "bmp" "bz2" "class" "css" "csv" "doc" "docx" "dmg" "ejs" "eot" "eps" "exe" "flac" "gif" "gz" "ico" "iso" "jar" "jpg" "jpeg" "js" "mid" "midi" "mkv" "mp3" "mp4" "ogg" "otf" "pdf" "pict" "pls" "png" "ppt" "pptx" "ps" "rar" "svg" "svgz" "swf" "tar" "tif" "tiff" "ttf" "webm" "webp" "woff" "woff2" "xls" "xlsx" "zip" "zst" "html"})
通常情况下, 现代后端一般会给敏感页面/有权限要求的页面附带Cache-Control: no-store响应头, 因此可以不做绕过设置. 如果你使用的后端没有做此类设置, 则必须在缓存规则中排除敏感页面/后台管理页面.
评论 (0)