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
What is this?CFnew is a Cloudflare Workers/Pages proxy panel that generates VLESS, Trojan and xhttp nodes, converts them into subscription formats for clients like Clash, Surge, Sing-box, Loon, Quantumult X, V2ray and Shadowrocket, and lets you manage everything through a web config page backed by Cloudflare KV.
Is this an app I install, or a script I run myself?It is not a local app — it is Worker/Pages source code that you deploy directly into your own Cloudflare account, and it runs entirely on Cloudflare's edge network.
How do I deploy it?Upload the project as a Cloudflare Pages deployment or Worker, then in Settings → Runtime set the compatibility date to 2026-01-20 and save; for the graphical config panel, create a KV namespace and bind it as variable C, then visit /{your-UUID}.
Do I need a Cloudflare account and KV namespace?Yes — you need a Cloudflare account to deploy the Worker/Pages project, and a KV namespace bound as environment variable C if you want the graphical management panel instead of editing variables by hand.
Any gotchas I should watch for after deploying?You must manually set the compatibility date to 2026-01-20 after deployment or things may break; also the p (custom ProxyIP) and wk (region) variables are mutually exclusive — setting one disables the other's logic.
Which proxy clients can use the generated subscriptions?It produces ready-to-use configs for Clash, Surge, Sing-box, Loon, Quantumult X, V2ray, Shadowrocket, Stash, NekoRay and V2rayNG, auto-detected by the client's User-Agent.
What is the ECH feature for?Encrypted Client Hello (ECH) is supported; the panel fetches the latest ECH config via DoH (preferring Google DNS, falling back to Cloudflare DNS) on every subscription refresh and auto-enables TLS-only mode to avoid port-80 interference.
Why can't I pick a specific region for the best IP anymore?Cloudflare uses anycast, so the same IP address resolves to different data centers depending on where you connect from — region-based IP selection doesn't actually control where you land. v3.0 removed that logic and ships 10 built-in official addresses spread across different /24 blocks instead.
Can I route my traffic through my own outbound proxy?Yes, the s variable lets you chain a SOCKS5, HTTP or HTTPS outbound proxy with Basic auth, and the qj setting decides whether that proxy is preferred, used only as fallback, or required with no fallback at all.
What does the built-in latency tester do?It's a bundled multi-threaded tool that pings candidate IPs (manual input, random Cloudflare ranges, or a remote URL list), auto-detects airport codes, and shows true latency after subtracting DNS/TLS handshake time.
Creator
byJoey
Size
83.7 MB
Stars
16.4K
Age
1y
Commits · 90 Days