通过Cloudflare规则实现纯静态随机图API#
参考项目 D-RandomPIC
基于 Cloudflare Pages 404 规则与 GitHub Actions 自动构建的随机图 API。
访问 https://randompic.pldduck.com/ecy-v 之类的地址即可获得一张随机图片。
演示#
介绍#
工作原理#
不依赖任何后端服务,完全由静态文件与 Cloudflare 规则实现随机取图:
gen_pic.py扫描pic/下的分类子文件夹,将每个分类的图片复制到dist/<分类>/目录下,并按十六进制编号重命名,生成000.jpg到fff.jpg共 4096 个文件(对应规则中 3 位十六进制 hash 的全部取值,覆盖所有可能路径,保证不会 404)。- 构建产物
dist/部署到 Cloudflare Pages。 - 在 Cloudflare 为该 Pages 项目配置 404 规则(见
rule.txt):
当用户访问 /ecy-v 时,如果该路径不存在(返回 404),规则会使用随机种子生成 3 位十六进制字符串并重写到 /ecy-v/xxx.jpg,从而随机返回该分类下的一张图片。
D-RandomPIC 目录结构#
新增图片分类时,只需在
pic/下新建一个子文件夹并放入图片,推送到仓库即可,构建脚本与 Cloudflare 规则无需改动。
本地构建测试#
需要 Python 3(仅使用标准库,无需安装任何依赖)。
构建完成后检查 dist/ 目录,每个分类下应生成 4096 个文件(000.jpg 到 fff.jpg)。
搭建部署#
部署方法#
1.Fork D-RandomPIC#
将 D-RandomPIC Fork一份到你的Github
2.创建 Pages 项目#
在 Cloudflare Dashboard 中创建 Pages 项目
选择直传项目 Direct Upload
3.配置 GitHub Actions Secrets#
| 名称 | 说明 |
|---|---|
CLOUDFLARE_API_TOKEN | Cloudflare API Token,需具备 Pages 编辑权限 |
CLOUDFLARE_ACCOUNT_ID | Cloudflare 账号 ID(Dashboard 首页右下角可查看) |
CLOUDFLARE_PROJECT_NAME | 创建Pages时填写的项目名称(如果填写 d-randompic 可忽略此变量) |
CLOUDFLARE_API_TOKEN 获取方法
点击右上角 支持 右边的 账户图标
点击配置文件
选择API令牌 点击右上角创建令牌
按照上图配置权限
最后点击获取令牌就可以得到令牌了
CLOUDFLARE_ACCOUNT_ID 获取方法
红色码住的这一段就是 也可以随便找个域名的页面进去的右侧下滑就有
4.配置 404 规则#
配置Rules 为 404 状态码配置重写规则 表达式见 rule.txt
找到随机图要使用的域名 点击进入
点击创建规则
选择URL重写规则
选择自定义表达式
按照上图配置
重写到 后面的内容如下
最后保存即可
5.触发Action#
进入action页面后 找到左侧的Build and Deploy to Cloudflare Pages
点击右侧的Run workflow
再次点击绿色的Run workflow
最后等待部署成功即可
API 使用#
GET /ecy-v:随机二次元图(竖屏/手机)GET /ecy-h:随机二次元图(横屏/电脑)- 新增分类
xxx后,GET /xxx即生效
示例:
在 HTML 中直接使用:
作者 跑路的duck
帮助改进本文


评论