cfnew README

The project's README from github.com/byJoey/cfnew. As one markdown file: README.md.

CFnew - 终端 v3.0

⚠️ 重要:部署后请将兼容日期设置为 2026-01-20

Pages 部署:

  1. 登录 Cloudflare 控制台
  2. 进入 Workers 和 Pages → 选择你的 Pages 项目
  3. 点击 设置 → 运行时
  4. 找到 兼容性日期,选择 2026-01-20,点击 保存
  5. 返回 部署 → 创建部署 → 上传文件

Worker 部署:

  1. 登录 Cloudflare 控制台
  2. 进入 Workers 和 Pages → 选择你的 Worker
  3. 点击 设置 → 运行时
  4. 找到 兼容性日期,选择 2026-01-20,点击 保存

语言: 中文 | فارسی

Telegram 交流群

主要功能

v3.0 更新

v2.9.9 更新

v2.9.8c 更新

v2.9.7 更新

v2.9.6 更新

v2.9.5 更新

v2.9.4 更新

v2.9.3 更新

v2.9.2 更新

v2.9.1 更新

v2.9 更新


相关工具

部署

订阅每15分钟自动优选一次

基础配置

变量名 值 说明
u 你的 UUID 必需,用于访问订阅和配置界面
p proxyip 可选,自定义ProxyIP地址和端口,支持 IPv4/IPv6/域名。设置后 wk 地区匹配失效(互斥)。也可在节点 path 里单独指定
s 出站代理地址 可选。支持 SOCKS5 和 HTTP/HTTPS 代理,见下方「出站代理」。也可在节点 path 里单独指定
d 自定义路径 可选,如 /mypath 或 /path/to/sub,不填用UUID路径。路径没 / 开头会自动补上
wk 地区代码 可选,手动指定Worker地区,如 SG、HK、US、JP。设置 p 后此项失效(互斥)。也可在节点 path 里单独指定

协议配置

变量名 值 说明
ev yes/no 可选,启用VLESS(默认启用)
et yes/no 可选,启用Trojan(默认禁用)
ex yes/no 可选,启用xhttp(默认禁用)
tp 自定义密码 可选,Trojan密码,留空用UUID
ech yes/no 可选,启用ECH功能(默认禁用)
alpn ALPN列表 可选,TLS节点ALPN参数。留空不写,由客户端协商;可选 h3、h2、http/1.1、h3,h2、h2,http/1.1、h3,h2,http/1.1

图形化配置(推荐)

  1. 在Workers中创建KV命名空间,绑定环境变量 C
  2. 部署后访问 /{你的UUID} 使用图形化配置
  3. 改完配置立即生效,不用重新部署

高级控制

变量名 值 说明
yx 自定义优选IP/域名 可选,支持命名,格式:1.1.1.1:443#香港节点,8.8.8.8:53#Google DNS
yxURL 优选IP来源URL 可选,自定义IP列表来源,留空用默认
scu 订阅转换地址 可选,默认:https://url.v1.mk/sub
epd yes/no 可选,启用优选域名(默认启用)
epi yes/no 可选,启用优选IP(默认启用)
egi yes/no 可选,启用GitHub默认优选(默认启用)
qj no / only 可选,出站方式。留空=优先走代理,no=优先直连、失败再走代理,only=只走代理不回落。见「出站代理」
dkby yes 可选,设为yes只生成TLS节点
ech yes/no 可选,启用ECH功能(默认禁用,启用后自动开启仅TLS模式)
alpn ALPN列表 可选,只写入TLS节点链接参数,留空则不写
yxby yes 可选,设为yes关闭所有优选功能
rm no 可选,设为no关闭地区智能匹配
ae yes 可选,设为yes允许API管理(默认关闭)

KV存储设置(推荐)

  1. 在Cloudflare Workers中创建KV命名空间
  2. 在Workers设置中绑定KV,变量名设为 C
  3. 重新部署
  4. 访问 /{你的UUID} 使用图形化配置

API使用

  1. 下载优选软件:https://github.com/byJoey/yx-tools/releases
  2. 开启API:访问 /{UUID} 或 /{自定义路径},找到"允许API管理",开启后保存
  3. 添加单个IP:
# 使用UUID路径
curl -X POST "https://your-worker.workers.dev/{UUID}/api/preferred-ips" \
  -H "Content-Type: application/json" \
  -d '{"ip": "1.2.3.4", "port": 443, "name": "香港节点"}'

# 使用自定义路径(如果设置了d变量)
curl -X POST "https://your-worker.workers.dev/{自定义路径}/api/preferred-ips" \
  -H "Content-Type: application/json" \
  -d '{"ip": "1.2.3.4", "port": 443, "name": "香港节点"}'
  1. 批量添加IP:
curl -X POST "https://your-worker.workers.dev/{UUID或自定义路径}/api/preferred-ips" \
  -H "Content-Type: application/json" \
  -d '[
    {"ip": "1.2.3.4", "port": 443, "name": "节点1"},
    {"ip": "5.6.7.8", "port": 8443, "name": "节点2"}
  ]'
  1. 清空所有IP:
curl -X DELETE "https://your-worker.workers.dev/{UUID或自定义路径}/api/preferred-ips" \
  -H "Content-Type: application/json" \
  -d '{"all": true}'

功能说明

延迟测试

v2.7开始提供,v2.9增强了筛选功能

官方直连

v3.0 开始,「指定地区 (wk)」留空就是官方直连,这也是默认值,什么都不用配。

以前留空叫「自动检测」:Worker 先探测自己在哪个国家,再去匹配第三方的 ProxyIP 域名。 现在留空直接用内置地址,不探测、不联网、不依赖别人的域名。

关于为什么不做「按地区选 IP」:Cloudflare 是任播(anycast),同一个 IP 在不同位置访问, 落到的机房不一样。挑 IP 决定不了你落地在哪,做成地区列表属于误导。

多协议支持

ECH 功能 (Encrypted Client Hello)

出站代理

s 变量用来指定出站代理,所有出站流量都会从它走。支持两类协议,靠前缀区分:

写法 走的协议 说明
host:port SOCKS5 不写前缀就是 SOCKS5,和以前一样
socks5://host:port SOCKS5 显式写法,等价于上面
http://host:port HTTP 明文连代理,再发建隧请求
https://host:port HTTPS 连代理这一跳走 TLS,适合代理本身要求加密的场景

带认证就在前面加 用户名:密码@:

user:[email protected]:1080
socks5://user:[email protected]:1080
http://user:[email protected]:8080
https://user:[email protected]:8443

说明几点:

出站方式(qj)

配好 s 之后,用 qj 决定流量怎么走。面板里对应「出站方式」下拉框:

qj 行为 什么时候用
留空(默认) 优先走代理,代理不通再回落 想走代理,但断了也别断网
no 优先直连,失败再走代理 只把代理当备用线路
only 只走代理,连不上直接断开 要求出口 IP 固定,不接受回落

only 和默认的区别在失败时:默认会回落到备用地址或直连,这时出口就变成 Worker 自己的 IP 了;only 宁可断开也不回落,出口 IP 不会漏。

没填 s 时三个选项都一样,都是直连。

自定义路径(d变量)

图形化配置

多语言支持

订阅转换控制

API管理

客户端 path 参数

v2.9.4 新增。在 VLESS/Trojan 分享链接的 path 字段里追加查询参数,即可为单个节点单独指定连接级配置,无需额外部署 Worker。

参数 作用 示例
p 覆盖 ProxyIP(支持带端口) p=1.1.1.1 或 p=1.2.3.4:8443
wk 覆盖 Worker 地区 wk=jp、wk=us、wk=sg
rm 关闭地区智能匹配 rm=no
s 覆盖出站代理 s=user:pass@host:1080、s=http://user:pass@host:8080

优先级:path 参数 > KV/环境变量 > 自动检测

⚠️ p 和 wk 互斥:设置 p 后会直接使用指定的 ProxyIP,wk 的地区匹配逻辑被完全跳过,两者同时写只有 p 生效。

path 示例:

# 指定 ProxyIP(不要同时写 wk)
/?ed=2048&p=1.1.1.1
/?ed=2048&p=proxy.example.com:443
/?ed=2048&p=[2001:db8::1]:443

# 指定地区(让 Worker 自动选该地区的 ProxyIP)
/?ed=2048&wk=jp
/?ed=2048&wk=sg&rm=no

# 指定出站代理(可与 wk 搭配)
/?ed=2048&s=user:[email protected]:1080&wk=us
/?ed=2048&s=http://user:[email protected]:8080&wk=us

不在上表中的变量(如 ev、et、yx 等)属于订阅生成级配置,在 WebSocket 握手阶段已过路由,放在 path 里无效,仍需在环境变量或 KV 中设置。

手动指定地区

优选节点命名

系统状态

高级控制

多客户端支持

支持10种客户端:CLASH、SURGE、SING-BOX、LOON、QUANTUMULT X、V2RAY、Shadowrocket、STASH、NEKORAY、V2RAYNG

性能优化

致谢

Star History

Star History Chart

cfnew (byJoey/cfnew)

Searching Database…

16.4K ·GitHub
这是什么?CFnew 是一个 Cloudflare Workers/Pages 代理面板,可以生成 VLESS、Trojan 和 xhttp 节点,把它们转换为 Clash、Surge、Sing-box、Loon、Quantumult X、V2ray 和 Shadowrocket 等客户端可用的订阅格式,并让你通过基于 Cloudflare KV 的网页配置页面统一管理。
这是我要安装的应用,还是我自己运行的脚本?它不是本地应用,而是 Worker/Pages 源代码,你可以直接把它部署到自己的 Cloudesflare 账号中,并完全在 Cloudflare 的边缘网络上运行。
我该怎么部署?将项目作为 Cloudflare Pages 部署或 Worker 上传,然后在 Settings → Runtime 中把兼容性日期设为 2026-01-20 并保存;如需图形化配置面板,请创建一个 KV 命名空间并将其绑定为变量 C,然后访问 /{your-UUID}。
我需要 Cloudflare 账号和 KV 命名空间吗?需要。部署 Worker/Pages 项目需要一个 Cloudflare 账号;如果你想使用图形化管理面板而不是手动编辑变量,还需要一个绑定为环境变量 C 的 KV 命名空间。
部署后有什么需要注意的坑吗?部署后必须手动将兼容性日期设为 2026-01-20,否则可能出现故障;另外,p(自定义 ProxyIP)和 wk(地区)变量互斥,设置其中一个会禁用另一个的逻辑。
哪些代理客户端可以使用生成的订阅?它可以生成可直接使用的配置,适用于 Clash、Surge、Sing-box、Loon、Quantumult X、V2ray、Shadowrocket、Stash、NekoRay 和 V2rayNG,并根据客户端的 User-Agent 自动识别。
ECH 功能是做什么用的?支持 ECH(Encrypted Client Hello,加密客户端握手信息)。面板会在每次刷新订阅时,通过 DoH 获取最新的 ECH 配置(优先使用 Google DNS,失败时回退到 Cloudflare DNS),并自动启用仅 TLS 模式,以避免 80 端口的干扰。
为什么现在不能为最佳 IP 选择特定地区了?Cloudflare 使用 anycast(任播)技术,同一个 IP 地址会根据你的连接位置解析到不同的数据中心,因此按地区选择 IP 并不能真正决定你连到哪里。v3.0 移除了该逻辑,改为内置 10 个官方地址,分布在不同的 /24 网段中。
我能让流量经过自己的出站代理吗?可以。变量 s 允许你串联一个 SOCKS5、HTTP 或 HTTPS 出站代理(支持 Basic 认证),而 qj 设置决定该代理是优先使用、仅作为备用,还是强制使用、不设回退。
内置的延迟测试工具是做什么的?这是一个内置的多线程工具,可以对候选 IP 进行 ping 测试(支持手动输入、随机的 Cloudflare IP 段或远程 URL 列表),自动识别机场三字码,并在扣除 DNS/TLS 握手时间后显示真实延迟。
Creator
byJoey
Size
83.8 MB
Stars
16.4K
Age
1y
Commits · 90 Days