Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloudflare VMess/Trojan Web 优选订阅

带 Web 界面的 Cloudflare IP 优选订阅服务:根据宿主机网络测速,自动选择低延迟/高速度 Cloudflare IP,改写导入 VMess/Trojan 节点的 addhostsniserverName,并生成外部订阅链接。

功能

  • Web 流程化界面:导入 -> 选择节点 -> 优选 IP -> 生成订阅。
  • 支持粘贴 vmess://、base64 订阅文本,或从网络订阅 URL 导入。
  • 可勾选需要替换的 VMess/Trojan 节点,未选节点不会进入输出订阅。
  • 支持定时优选 Cloudflare IP 和定时重新生成订阅。
  • /sub 输出标准 base64 订阅链接。
  • /health/api/state 查看状态。
  • /api/refresh 手动触发优选。
  • Docker 一键部署,配置持久化到 /data/config.json
  • 默认候选池 = 第三方公开优选 IP 源抓取结果 + 自定义 IP,不再混入官方内置 IP。
  • 自定义 IP 优先保留,第三方抓取 IP 用于补齐候选池数量。
  • Web 可自定义第三方优选 URL、自定义 IP、候选池数量、来源模式,并可手动重新抓取/生成候选池。
  • Web 支持实时查看后端日志,接口为 /api/logs?n=300

Docker 运行

docker compose up -d --build

访问 Web:

http://服务器IP:8088/

订阅链接:

http://服务器IP:8088/sub

手动运行

python3 -m cf_vmess_sub --config ./data/config.json --host 0.0.0.0 --port 8088

配置说明

首次启动会自动生成 data/config.json。主要字段:

  • candidate_ips:Cloudflare 候选 IP 池。
  • selected_indices:被选中输出的节点索引。
  • refresh_interval_seconds:定时优选间隔。
  • download_bytes:每个 IP 下载测速字节数,设为 0 可只测延迟。
  • top_n:优选前 N 个 IP 轮换分配给选中节点。
  • rewrite_fields:要改写的 VMess/Trojan 字段。

注意

该工具只改写你导入的 VMess/Trojan 节点,不会发现或破解任何节点。测速结果取决于容器所在宿主机网络。

定时与优选策略

  • refresh_interval_seconds:定时重新测速优选间隔,Web 页面用分钟填写,后端保存为秒。

  • ranking_strategyspeed 按网速优先,latency 按延时优先。

  • top_n:使用优选排名前 N 条轮换写入 VMess/Trojan 节点。

  • 优选完成后自动生成订阅链接,不再单独设置定时生成订阅。

  • Web 的“停止定时优选”会关闭后台定时优选计划。

  • 每个导入节点会按 Top N 优选 IP 各生成一条订阅节点,例如 2 个节点、Top N=4 会输出 8 条。

  • 复制订阅链接按钮包含 Clipboard API 和传统复制 fallback。

Trojan 支持说明

  • 支持导入 trojan:// 链接和包含 Trojan 的 base64 订阅。
  • 优选后 Trojan 链接只替换连接 hostname 为优选 IP。
  • Trojan 的 password、query 参数、snihosttypepath 等保持原样。
  • Top N 规则和 VMess 一致:每个选中节点按前 N 个优选 IP 各生成一条。

HTTPing 分阶段测速

  • 先对候选 IP 做多次 TCPing,默认 3 次,用中位数作为延迟。
  • 只接受配置中的状态码,默认 200/301/302。
  • 从响应头提取 Cloudflare cf-ray 机房代码。
  • 记录 TCPing 延迟、HTTP 状态、机房、失败率。HTTPing 只用于校验可用性和读取 cf-ray 机房。
  • 只对延迟靠前的 N 个 IP 做下载测速,默认 20 个。
  • 排序可按延迟优先或速度优先。

下载测速单位

  • 速度单位为 Mbps,计算公式为 下载字节数 * 8 / 耗时秒 / 1,000,000

  • Web 页面现在用 MB 配置下载测速大小,后端保存为字节。

  • 默认下载测速大小为 20MB,避免 256KB 小样本导致 TLS/首包开销占比过高、速度严重偏低。

  • 测速线程数 对应后端 max_workers,控制 TCPing/HTTPing 和下载测速的并发线程数;调大可加快测速,但会增加本机和网络负载。

操作日志

  • 保存候选设置会记录候选模式、候选上限、自定义 IP 数、第三方源数和当前候选数。
  • 保存优选设置会记录定时间隔、TopN、策略、下载大小、TCPing 次数、下载测速前 N 和线程数。
  • 导入节点会记录新增、跳过和错误数量。
  • 清空节点会记录清空动作。

S-UI 推送

Web UI 支持把当前生成的优选 VMess/Trojan 节点直接推送到 S-UI 用户的外部链接列表。

配置项:

  • S-UI API 入口:例如 https://host:port/shadow/apiv2
  • API Token:S-UI 后台 Admin 页面生成的 API Token,请求头使用 Token: ...
  • 获取用户并选择:填写入口和 Token 后点击“获取用户”,程序会调用 /apiv2/clients 拉取用户列表,并在 S-UI 推送卡片内直接勾选一个或多个目标用户。
  • 推送模式:
    • 追加:保留原有 links,按 URI 去重后追加本次生成节点。
    • 覆盖:保留 local 链接,移除现有 external 链接,再写入本次生成节点。
  • 生成订阅时同步推送:勾选后,手动生成/立即优选生成订阅时会自动推送到已选择的 S-UI 用户。

手动按钮“立即推送当前订阅”只推送当前已经生成的订阅节点,不重新测速。

About

Cloudflare optimized subscription generator for VMess and Trojan nodes

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages