Skip to content

Latest commit

 

History

History
179 lines (135 loc) · 5.07 KB

File metadata and controls

179 lines (135 loc) · 5.07 KB

CloudflareSub Logo CloudflareSub

一个轻量化的优选IP订阅器

License MIT Windows macOS Linux Cloudflare Workers Status Active

功能特性

  • 支持 vmessvlesstrojan 节点解析
  • 支持 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

快速开始(Cloudflare 网页端)

视频部署流程:https://youtu.be/E5PI0LsQ43M

下面按 Cloudflare Dashboard 流程操作,尽量不依赖命令行。

1) 准备代码

  • 把本项目代码放到本地(你现在已经有)
  • 确认 wrangler.tomlnamemainassets 路径与项目一致

2) 在 Dashboard 创建 Worker

  • 打开 Cloudflare Dashboard
  • 进入 Workers & Pages
  • 点击 Create application -> Create Worker
  • 先创建一个 Worker(用于初始化项目)

3) 绑定到 GitHub 仓库(推荐)

  • Workers & Pages 点击 Create -> Import a repository
  • 授权 GitHub,并选择仓库 InfiCheesy/cloudflaresub
  • 构建设置建议:
    • Framework preset: None
    • Build command: 留空
    • Build output directory: 留空
  • 保存并开始部署

说明:这个项目是 Worker 项目,入口在 src/worker.js,静态资源在 public/

4) 创建 KV Namespace

  • 进入 Storage & Databases -> KV
  • 点击 Create namespace
  • 名称建议:SUB_STORE

5) 给 Worker 绑定 KV

  • 回到 Worker 项目页面
  • 进入 Settings -> Bindings
  • 点击 Add binding,类型选择 KV namespace
  • Variable name 填:SUB_STORE
  • Namespace 选择上一步创建的 KV
  • 保存并重新部署

6) 配置访问令牌 Secret

  • 在 Worker 项目中进入 Settings -> Variables
  • Secrets 区域添加:
    • Key: SUB_ACCESS_TOKEN
    • Value: 你自定义的一串令牌
  • 保存后重新部署

说明:

  • 设置后,请求 /sub/:id 必须带 ?token=...
  • 不设置也可运行,但订阅链接没有二次访问保护

7) 验证线上服务

  • 打开 Worker 域名(如 https://<name>.<subdomain>.workers.dev
  • 访问首页 /,应看到前端表单
  • 在页面输入节点和优选地址,点击生成
  • 拿到 /sub/:id 后测试:
    • ?target=raw&token=...
    • ?target=clash&token=...
    • ?target=surge&token=...

8) 后续更新代码

  • 如果你使用 GitHub 自动部署:直接 push 到对应分支,Cloudflare 会自动重新部署
  • 如果你不用 GitHub 自动部署:可在 Dashboard 在线编辑器中修改后手动部署

API 说明

POST /api/generate

输入原始节点与优选地址,返回短链订阅。

请求体示例:

{
  "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=..."
  }
}

GET /sub/:id

target 返回订阅内容:

  • target=raw(默认)
  • target=clash
  • target=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

License

MIT