Skip to content

illusionlie/subpool-worker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sub Pool Worker

一个基于 Cloudflare Workers 的轻量级订阅池服务,用于管理和分发代理订阅链接。

功能特点

  • 🔄 订阅聚合:将多个订阅链接/节点合并为一个,按组管理
  • 🌐 格式转换:可配置远端 subconverter 进行订阅格式转换
  • 🔐 管理后台:提供基于 Web 的管理界面
  • 🚫 失败封禁: 防暴力破解的登录失败封禁机制
  • 📱 Telegram 通知:可选的关键操作通过 Telegram 机器人通知
  • 🛡️ 访问控制:支持阻止特定地区访问和简单的机器人防护
  • 📝 日志记录: 完整的访问日志和错误记录
  • 🗃️ KV 存储:使用 Cloudflare KV 进行配置和数据存储

项目结构

src/
├── handlers/           # 请求处理器
│   ├── admin.js        # 管理后台处理
│   └── subscription.js # 订阅请求处理
├── services/           # 核心服务
│   ├── auth.js         # JWT 认证服务
│   ├── config.js       # 配置管理服务
│   ├── kv.js           # KV 存储服务
│   ├── logger.js       # 日志服务
│   ├── subconverter.js # 订阅转换服务
│   └── telegram.js     # Telegram 通知服务
├── views/              # 页面模板
├── index.js            # 入口文件
├── router.js           # 路由配置
└── utils.js            # 工具函数

快速开始

环境准备

  • Node.js 18+
  • Cloudflare 账户
  • Wrangler CLI

命令行部署到 Cloudflare

  1. 克隆本项目:

    git clone https://github.com/illusionlie/subpool-worker.git
    cd sub-pool
  2. 安装依赖:

    npm install
  3. 创建 KV 命名空间:

    wrangler kv namespace create "KV"
  4. 配置 Cloudflare:

    • 复制 wrangler.toml.examplewrangler.toml
    • 修改配置文件中的占位符:
      • __WORKER_NAME__:你的 Worker 名称
      • __KV_NAMESPACE_ID__:你的 KV 命名空间 ID
      • __JWT_SECRET__:JWT 密钥(随机字符串)
      • __DEBUG_SECRET__:调试密钥(随机字符串)
  5. 部署到 Cloudflare:

    npm run deploy

通过 Github Actions 部署到 Cloudflare

  1. 复刻本项目到你的 Github 账户

  2. 在你的 Cloudflare 账户中创建:

    • 一个 Workers KV,命名随意
    • 帐户 API 令牌(只需要 Workers KV 存储和 Workers 脚本 的编辑权限)

保管妥当你的 KV ID和 API 令牌,不要将其分享给任何人或暴露在公开环境!

  1. 在复刻的 Github 项目中创建(设置->机密和变量->操作->仓库机密):
  • WORKER_NAME

    • : 部署后的 Worker 名称
  • CF_API_TOKEN

    • : Cloudflare API 令牌
  • CF_KV_NAMESPACE_ID

    • : Workers KV ID
  • DEBUG_SECRET

    • : 用于覆写日志等级的密钥
  • JWT_SECRET

    • : JWT 密钥
  • CUSTOM_DOMAIN

    • : 自定义域(可选)

本地开发

  1. 启动开发服务器:

    npm run dev
  2. 访问 http://localhost:8787 查看应用

使用说明

管理后台使用

  1. 访问 /admin 路径进入管理后台,默认密码为 admin_password

部署完成后第一时间修改密码!!

  1. 使用配置的管理员密码登录

  2. 管理后台主要能力:

    • 订阅组管理:名称、Token、是否允许中国大陆访问、订阅来源(逐行:可为 URL 或内联节点)
    • 过滤器:启用后可填写多条规则;支持两种写法:
      • 正则:/pattern/flags(如:/过期/i)
      • 简单字符串:会自动转换为正则并同时匹配 URL 编码形式
    • 全局设置:登录失败防护、修改密码、Telegram 通知、Subconverter 后端与配置地址

Telegram 通知配置

  1. 创建 Telegram 机器人并获取 Bot Token
  2. 获取聊天 ID (Chat ID)
  3. 在管理后台配置 Telegram 设置
  4. 启用通知功能

订阅接口

  • 路径:GET /sub/:token
  • 客户端格式选择(任一参数存在即生效):
    • ?clash → Clash
    • ?sb?singbox → Sing-box
    • ?surge → Surge
    • ?quanx → Quantumult X
    • ?loon → Loon
    • ?b64?base64 → Base64(直接返回 Base64 原始节点)
  • 响应头(示例):
    • Profile-Update-Interval: <分钟>
    • Subscription-Userinfo: upload=0; download=0; total=<字节>; expire=<UNIX时间>
    • 若为转换产物(如 Clash/Sing-box),会附带 Content-Disposition 以便客户端保存为配置文件
  • 区域限制与反爬:
    • 每个订阅组可单独设置“允许中国大陆 IP 访问”
    • 若启用全局“阻止爬虫”,将基于 UA、HTTP/TLS/请求头多维打分阻断访问

Subconverter 对接说明

  • 工作流程:
    1. 将订阅来源分为“内联节点”和“远程订阅 URL”;并发拉取远程内容
    2. 自动识别 YAML/JSON 配置类内容,或 Base64/原生节点,并进行过滤与去重
    3. 目标为 Clash/Sing-box 时:拼装回调 URL + 远程配置 URL 列表,转交 Subconverter 转换
    4. 转换失败时降级返回 Base64 原始节点
  • 配置项(管理后台 → 全局设置):
    • Subconverter 后端地址(不含协议)与协议(https/http)
    • Subconverter 配置文件 URL

技术栈

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

安全特性

  • JWT Token 认证
  • 登录失败次数限制
  • IP 封禁机制
  • 防止中国地区访问(可配置)
  • 机器人访问检测

作者

Copyright (c) 2025 IllusionLie

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

致谢

About

简单的基于Cloudflare Worker的订阅池服务

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •