Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 其他分享 › 「图片优化」利用Cloudflare CDN减少回源Bucket流量

「图片优化」利用Cloudflare CDN减少回源Bucket流量

Eswlnk的头像
Eswlnk
2025-01-18 21:12:06
「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog
智能摘要 AI
本文介绍了利用Cloudflare搭建图片CDN的步骤,包括优选IP的选择、Cloudflare的缓存与压缩规则配置,以及通过Workers实现Token校验。文章还提供了相关代码示例,帮助用户优化图片加载体验并增强安全性。

0x00 前言

最近Cloudflare有一些新动作,再加上一些可用的优选IP,大带宽节点,这不就是一个完美的图片CDN吗?之前白嫖的CDN虽然也行,但是节点偏少,并且节点带宽仅为10M,图片较大的话,网站的加载体验感就不是很好。说干就干,直接开始!

0x01 寻找优选IP

推荐选择TCP延迟较低,并且带宽较大的节点,这里我推荐一个默认和移动解析

默认*.cloudflare.182682.xyz.
移动digitalocean.com
优选CNAME

还有一些其他的CloudFlare公共Cname域名,注意甄别

地址名称协议版本维护周期备注说明
*.cloudflare.182682.xyz4&615ip/15分钟泛域名解析可以解析到任意前缀,本站提供维护
bestcf.top424HVPS789
cdn.2020111.xyz415ip/10分钟网络收集
cfip.cfcdn.vip46ip/1天网络收集
cf.0sm.com4&6手动更新网络收集
cf.090227.xyz4&6未知频率网络收集
cf.zhetengsha.eu.org4未知频率网络收集
cloudflare.9jy.cc4未知频率网络收集
cf.zerone-cdn.pp.ua4未知频率网络收集
cfip.1323123.xyz4未知频率网络收集
cnamefuckxxs.yuchen.icu4未知频率网络收集
cfip.xxxxxxxx.tk4未知频率OTC大佬提供维护
cloudflare-ip.mofashi.ltd4未知频率网络收集
115155.xyz4&618ip/1小时网络收集
cname.xirancdn.us4&6未知频率网络收集
f3058171cad.002404.xyz4&6未知频率网络收集
speed.marisalnc.com41000ip/3分钟【推荐】ktff大佬提供维护
8.889288.xyz4未知频率网络收集
cdn.tzpro.xyz4未知频率网络收集
cf.877771.xyz4未知频率网络收集
xn--b6gac.eu.org4未知频率↗↘↗.eu.org
freeyx.cloudflare88.eu.org41000ip/3分钟同speed.marisalnc.com

尽量保证三网线路的解析不会超时,如下图所示:

「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog

0x02 Cloudflare 相关设置

由于Cloudflare的免费版本不能在Origin Rules里修改相关的SNI设置,所以不能实现绕过备案,所以这里我推荐其他的相关配置(当然你可以尝试使用workers来实现,不过cf的免费版本每天支持10w次请求)

Cache Rules

边缘TTL直接设置1年,并且忽略查询字符串,如果要实现相关的裁剪,在bucket的设置相关的接口,切记不要使用「?」作为样式分隔符,如果可以的话,建议开启原始资源保护,保证你的每个图片都有自己的相关水印。

「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog

这里的状态代码TTL可以根据相关bucket厂商是否对403或者404状态计算回源流量来进行缓存,如果你像我一样,只是单纯的用作图片CDN,那么全缓存没有问题,当然这也会导致一个问题:当一位攻击者掌握你的图片命名逻辑时,可能会导致你的上传的新图片被404状态码覆盖。

WAF配置

此步骤可以省略,最开始是想要来防止被采集图片,但是苦于Cloudflare不能像Edgeone一样校验鉴权设置,只有在Workers上进行设置,所以就随便用点规则。

「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog

允许合法机器人

(cf.verified_bot_category in {"Search Engine Crawler" "Search Engine Optimization" "Monitoring & Analytics" "Page Preview"}) or (ip.src eq ******) or (ip.src in {110.249.201.0/24 110.249.202.0/24 111.225.148.0/24 111.225.149.0/24 220.243.135.0/24 220.243.136.0/24 220.243.188.0/24 220.243.189.0/24 60.8.123.0/24 60.8.151.0/24})

IP分数

(ip.src in $block) or (cf.threat_score gt 10 and not cf.client.bot) or (http.user_agent contains "Pixalate.com/1.0") or (http.user_agent contains "python-requests") or (http.user_agent contains "MJ12bot") or (http.user_agent contains "PetalBot")

Block托管的列表IP基本没啥用,网上随便找找,保证正常蜘蛛能够爬取即可

相关保护

(http.request.uri.path contains "../..") or (http.request.uri.path contains "/*") or (http.request.uri.path contains "etc/passwd") or (http.request.uri.query contains "gopher:") or (http.request.uri.query contains "doc:") or (http.request.uri.query contains "php:") or (http.request.uri.query contains "glob:") or (http.request.uri.query contains "file:") or (http.request.uri.query contains "phar:") or (http.request.uri.query contains "zlib:") or (http.request.uri.query contains "ftp:") or (http.request.uri.query contains "ldap:") or (http.request.uri.query contains "dict:") or (http.request.uri.query contains "ogg:") or (http.request.uri.query contains "data:") or (http.request.uri.query contains ":$") or (http.request.uri.query contains "${") or (http.request.uri.query contains "invokefunction") or (http.request.uri.query contains "call_user_func_array") or (http.request.uri.query contains "\\think\\") or (http.request.uri.query contains "base64_decode(") or (http.request.uri.query contains "define(") or (http.request.uri.query contains "eval(") or (http.request.uri.query contains "file_get_contents(") or (http.request.uri.query contains "include(") or (http.request.uri.query contains "require(") or (http.request.uri.query contains "require_once(") or (http.request.uri.query contains "shell_exec(") or (http.request.uri.query contains "phpinfo(") or (http.request.uri.query contains "system(") or (http.request.uri.query contains "passthru(") or (http.request.uri.query contains "char(") or (http.request.uri.query contains "chr(") or (http.request.uri.query contains "preg_") or (http.request.uri.query contains "execute(") or (http.request.uri.query contains "echo(") or (http.request.uri.query contains "print(") or (http.request.uri.query contains "print_r(") or (http.request.uri.query contains "var_dump(") or (http.request.uri.query contains "fopen(") or (http.request.uri.query contains "alert(") or (http.request.uri.query contains "showmodaldialog(") or (http.request.uri.query contains "$_GET[") or (http.request.uri.query contains "$_POST[") or (http.request.uri.query contains "$_COOKIE[") or (http.request.uri.query contains "$_FILES[") or (http.request.uri.query contains "$_SESSION[") or (http.request.uri.query contains "$_ENV[") or (http.request.uri.query contains "$_PHPLIB[") or (http.request.uri.query contains "$_GLOBALS[") or (http.request.uri.query contains "$_SERVER[") or (http.user_agent contains "mj12bot.com") or (http.user_agent contains "censys") or (http.user_agent contains "Go-http-client") or (http.request.uri contains ".asp") or (http.request.uri contains ".aspx") or (http.user_agent contains "msray-plus") or (http.request.uri contains ".ashx") or (http.user_agent contains "Skywork") or (http.user_agent contains "GPTBot") or (http.user_agent contains "DataForSeoBot") or (http.user_agent contains "mj12bot.com") or (http.request.uri.query contains " or ") or (http.request.uri.query contains " xor ") or (http.request.uri.query contains " and ") or (http.request.uri.query contains " =") or (http.request.uri.query contains " <") or (http.request.uri.query contains " >") or (http.request.uri.query contains "'") or (http.request.uri.query contains "current_user")

这一规则主要使用来防止扫描或者SQL注入的,如果你并没有使用厂商的bucket,而是选择了自己的主机或者服务器,那么这个规则也许能够帮上一些忙,不过基本没用

IDC ASN验证

(ip.geoip.asnum in {14618 16509 8075 4766 25532 64022 134768 22362})

防止低端采集

(not http.referer contains "eswlnk.com") or (cf.client.bot and not cf.verified_bot_category in {"Search Engine Crawler" "Search Engine Optimization" "Monitoring & Analytics" "Academic Research" "Page Preview"})

像这种,加个referer就能够直接采集到你的图片,如果想要尽可能防止大规模采集,可以采用时间戳验证和token校验,一般大厂bucket都支持。

Compression Rules

以图片文件CDN为例,对所有传入请求进行压缩处理,并启用 Zstandard (Zstd) 压缩

「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog

0x03 效果测试

「图片优化」利用Cloudflare CDN减少回源Bucket流量-Eswlnk Blog
简单测试

0x04 Workers可用Token校验

提供一份简单的代码,自己手搓一个插件实现相关功能即可:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const url = new URL(request.url);
  const token = url.searchParams.get('token');
  const resourcePath = url.pathname;

  // 验证 Token
  if (!validateToken(resourcePath, token)) {
    return new Response('Access Denied', { status: 403 });
  }

  // 允许访问资源
  return fetch(request);
}

function validateToken(resourcePath, token) {
  const SECRET_KEY = 'your_secret_key';
  const [timestamp, signature] = token.split(':');

  // 检查 Token 是否过期
  if (Date.now() / 1000 > parseInt(timestamp)) {
    return false;
  }

  // 重新计算签名
  const message = `${resourcePath}:${timestamp}`;
  const expectedSignature = CryptoJS.HmacSHA256(message, SECRET_KEY).toString();

  // 比较签名
  return signature === expectedSignature;
}
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
cdn加速cloudflare图片压缩
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「其他分享」Windows Hello的妙用
上一篇
「其他分享」市面上静态页面服务商比较与推荐:选择最适合您的平台
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「亲测有效」Google Gemini 学生优惠:解决身份验证和支付卡验证
  • 解决国际版EdgeOne绑卡和手机验证问题
  • 小工具开发之EdgeOne免费计划兑换工具
  • 「其他分享」市面上静态页面服务商比较与推荐:选择最适合您的平台
  • 「其他分享」Windows Hello的妙用
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

关于小数据机器学习的一些思考
2022-06-03 20:51:01
如何关闭移动浏览器的云端加速?
2022-07-19 18:34:46
「其他分享」Typecho主题Joe二次修改优化版
2022-08-31 13:56:36

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 1.108 秒   |  SQL查询 22 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈