带 Web 界面的 Cloudflare IP 优选订阅服务:根据宿主机网络测速,自动选择低延迟/高速度 Cloudflare IP,改写导入 VMess/Trojan 节点的 add、host、sni、serverName,并生成外部订阅链接。
- 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 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_strategy:speed按网速优先,latency按延时优先。 -
top_n:使用优选排名前 N 条轮换写入 VMess/Trojan 节点。 -
优选完成后自动生成订阅链接,不再单独设置定时生成订阅。
-
Web 的“停止定时优选”会关闭后台定时优选计划。
-
每个导入节点会按 Top N 优选 IP 各生成一条订阅节点,例如 2 个节点、Top N=4 会输出 8 条。
-
复制订阅链接按钮包含 Clipboard API 和传统复制 fallback。
- 支持导入
trojan://链接和包含 Trojan 的 base64 订阅。 - 优选后 Trojan 链接只替换连接 hostname 为优选 IP。
- Trojan 的 password、query 参数、
sni、host、type、path等保持原样。 - Top N 规则和 VMess 一致:每个选中节点按前 N 个优选 IP 各生成一条。
- 先对候选 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 和线程数。
- 导入节点会记录新增、跳过和错误数量。
- 清空节点会记录清空动作。
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 用户。
手动按钮“立即推送当前订阅”只推送当前已经生成的订阅节点,不重新测速。