一个轻量化的优选IP订阅器
- 支持
vmess、vless、trojan节点解析 - 支持 Base64 订阅文本自动展开
- 支持
host[:port][#remark]格式的优选地址 - 结果写入 Workers KV,生成
/sub/:id短链 - 相同输入自动去重(7 天 TTL)
- 支持
SUB_ACCESS_TOKEN访问令牌保护 - 支持导出:Raw(Base64)/ Clash(YAML)/ Surge(文本)
cloudflaresub/
├─ src/
│ ├─ worker.js # Worker 入口(API + 订阅输出)
│ └─ core.js # 解析/渲染核心函数(测试使用)
├─ public/ # 前端静态资源
├─ tests/smoke.mjs # Smoke test
├─ wrangler.toml
└─ package.json
视频部署流程:https://youtu.be/E5PI0LsQ43M
下面按 Cloudflare Dashboard 流程操作,尽量不依赖命令行。
- 把本项目代码放到本地(你现在已经有)
- 确认
wrangler.toml中name、main、assets路径与项目一致
- 打开 Cloudflare Dashboard
- 进入
Workers & Pages - 点击
Create application->Create Worker - 先创建一个 Worker(用于初始化项目)
- 在
Workers & Pages点击Create->Import a repository - 授权 GitHub,并选择仓库
InfiCheesy/cloudflaresub - 构建设置建议:
- Framework preset:
None - Build command: 留空
- Build output directory: 留空
- Framework preset:
- 保存并开始部署
说明:这个项目是 Worker 项目,入口在 src/worker.js,静态资源在 public/。
- 进入
Storage & Databases->KV - 点击
Create namespace - 名称建议:
SUB_STORE
- 回到 Worker 项目页面
- 进入
Settings->Bindings - 点击
Add binding,类型选择KV namespace - Variable name 填:
SUB_STORE - Namespace 选择上一步创建的 KV
- 保存并重新部署
- 在 Worker 项目中进入
Settings->Variables - 在
Secrets区域添加:- Key:
SUB_ACCESS_TOKEN - Value: 你自定义的一串令牌
- Key:
- 保存后重新部署
说明:
- 设置后,请求
/sub/:id必须带?token=... - 不设置也可运行,但订阅链接没有二次访问保护
- 打开 Worker 域名(如
https://<name>.<subdomain>.workers.dev) - 访问首页
/,应看到前端表单 - 在页面输入节点和优选地址,点击生成
- 拿到
/sub/:id后测试:?target=raw&token=...?target=clash&token=...?target=surge&token=...
- 如果你使用 GitHub 自动部署:直接 push 到对应分支,Cloudflare 会自动重新部署
- 如果你不用 GitHub 自动部署:可在 Dashboard 在线编辑器中修改后手动部署
输入原始节点与优选地址,返回短链订阅。
请求体示例:
{
"nodeLinks": "vmess://...\nvless://...",
"preferredIps": "104.16.1.2#HK\n104.17.2.3:2053#US",
"namePrefix": "CF",
"keepOriginalHost": true
}字段说明:
nodeLinks: 多行节点链接preferredIps: 多行优选地址,格式host[:port][#remark]namePrefix: 节点名附加前缀keepOriginalHost: 是否保留原始 Host/SNI(默认true)
返回示例(节选):
{
"ok": true,
"shortId": "AbC123xYz9",
"urls": {
"auto": "https://<worker>/sub/AbC123xYz9?token=...",
"raw": "https://<worker>/sub/AbC123xYz9?target=raw&token=...",
"clash": "https://<worker>/sub/AbC123xYz9?target=clash&token=...",
"surge": "https://<worker>/sub/AbC123xYz9?target=surge&token=..."
}
}按 target 返回订阅内容:
target=raw(默认)target=clashtarget=surge
示例:
curl "https://<worker>/sub/<id>?target=clash&token=<SUB_ACCESS_TOKEN>"根路径 / 提供网页表单(来自 public/):
- 粘贴节点链接
- 粘贴优选 IP / 域名
- 生成并展示各客户端订阅链接
- 一键复制 / 生成二维码
src/worker.js当前是 KV 短链方案,不依赖SUB_LINK_SECRET- 每条订阅记录默认保存 7 天(TTL)
- Surge 导出当前仅包含
vmess/trojan
MIT