cloudflare免费版可通过referer校验、rate limiting和ip封禁三重防护实现防盗链与防刷流量:先建防火墙规则拦截非本站referer的静态资源请求,再配置每ip每分钟100次限速及本地私有ip段封禁,最后强制https并启用hsts。

想用Cloudflare免费CDN防止别人盗用你网站的图片、视频或JS文件,同时避免恶意刷流量导致账单暴涨,就得在不花钱的前提下把Referer校验和基础访问控制配到位。
开启免费版防盗链核心设置
登录Cloudflare控制台 → 进入目标域名 → 左侧菜单点「Rules」→ 选择「Firewall Rules」→ 点右上角「Create a firewall rule」。
在「Expression Builder」中输入:http.request.uri.path matches "(?i)\.(jpg|jpeg|png|gif|webp|mp4|avi|js|css)$" and not http.referer matches "^https?://(www\.)?yourdomain\.com(/.*)?$"(把yourdomain.com替换成你自己的主域名)。
动作选「Block」→ 点「Deploy」。这一步会直接拦截所有非你域名Referer发起的静态资源请求,包括空Referer(比如用户直接粘贴图片链接访问)——【空Referer默认被拦截,如需放行必须手动加条件】。
补充空Referer与搜索引擎白名单
方法一:允许搜索引擎爬虫访问
在刚才的防火墙规则表达式末尾追加:and not (http.referer contains "google." or http.referer contains "bing." or http.referer contains "baidu.")。这样Google、Bing、百度的爬虫就能正常抓取你的图片了。
方法二:放行空Referer但限制UA
新建一条规则,表达式写:http.request.uri.path matches "(?i)\.(jpg|jpeg|png|gif|webp)$" and http.referer eq "" and not http.user_agent contains "Mozilla" → 动作选「Block」。这能拦掉大部分脚本直刷,又保留浏览器直接打开图片链接的可用性。
注意:Cloudflare免费版不支持自定义Token签名URL,所以Referer方案是唯一可行的防盗链手段。
防刷流量三道关卡配置
第一步:设置每IP每分钟请求数上限
「Rules」→「Rate Limiting」→「Create a rate limiting rule」→ 触发条件填:http.request.uri.path matches "(?i)\.(jpg|png|js|css)$" → 限速设为「100 requests per minute」→ 动作选「Block」。
第二步:封禁高频异常IP段
「Security」→「WAF」→「Managed Rules」→ 关闭「Cloudflare Bot Management」(免费版不可用),改用「Custom Rules」→ 添加规则:ip.src in {192.168.0.0/16 172.16.0.0/12 10.0.0.0/8} → 动作选「Block」。这能立刻阻断本地网段伪造的批量请求。
第三步:强制HTTPS并启用HSTS
「SSL/TLS」→「Overview」→ 加密模式选「Full」→ 下滑到「Edge Certificates」→ 开启「Always Use HTTPS」和「HTTP Strict Transport Security (HSTS)」→ Max Age设为「31536000」。这能防止中间人篡改Referer头或降级攻击绕过防盗链。











