fast-xray
Cloudflare 优选 IP 工具,面向 CDN 落地的 VLESS 节点。纯 Rust,内置 VLESS + WebSocket + TLS 客户端,无需 xray。
从 Cloudflare 的 IP 段中筛出延迟低、下载快的 IP,输出可直接导入的节点(别名 速度-延迟-ip,如 12.34M-156ms-104.19.53.168)。
原理
节点经 Cloudflare 反代(橙云)时,任意 CF IP 都接受其 TLS 连接,回源由 TLS SNI 与 WebSocket Host 决定。优选只替换连接 IP,SNI / Host 保持原域名,即可在等价的 CF IP 中择优。
网络拓扑
flowchart LR
Client["客户端<br/>fast-xray"]
subgraph CF["Cloudflare 任播网络"]
direction TB
IP1["CF IP A"]
IP2["CF IP B"]
IP3["CF IP …(最优)"]
end
Origin["源站<br/>VLESS 服务端"]
Dest["目标<br/>generate_204 · cachefly"]
Client -.->|探测候选| IP1
Client -.->|探测候选| IP2
Client ==>|"选最优 · TLS"| IP3
IP1 --> Origin
IP2 --> Origin
IP3 ==>|"SNI / Host = 原域名"| Origin
Origin --> Dest
不同候选 IP 仅是进入 Cloudflare 的入口不同,均回到同一源站;优选即在其中挑延迟低、速度快的入口。
隧道分层
flowchart TB
A["TCP — 候选 CF IP:443"]
B["TLS — SNI = 原域名"]
C["WebSocket — Host = 原域名, path = 原 path"]
D["VLESS 头 — uuid + 目标地址"]
E["内层 TLS + HTTP — 测延迟 / 下载测速"]
A --> B --> C --> D --> E
其中 SNI 与 Host 始终为原域名,候选 IP 仅决定流量从哪个 Cloudflare 入口进入。
适用范围
仅支持 VLESS + ws + tls、encryption=none、无 flow / Vision 的 CDN 落地节点。
Reality 直连源站、不经 CDN,不适用本工具。
使用
完整流程(无子命令即 auto):
fast-xray --node-file node.txt -n 50 --lat-top 30 --speed-top 10
节点 URL 含 &,可直接加引号传入,或用 --node-file 从文件读取。结果写入 result/result.txt。
只要一个够快的 IP,用 easy——边发现边测速,第一个达标即停:
fast-xray easy --node-file node.txt --speed 5
各阶段也可单独运行用于调试或定制。
流水线
flowchart LR
CF["CF IP 段"] -->|ping| A["ip.txt<br/>N 个有效 IP"]
A -->|latency| B["latency.csv<br/>最快 M 个"]
B -->|speed| C["speed.csv<br/>最优 K 个"]
C -->|export| R["result.txt<br/>可导入节点"]
| 阶段 | 输入 | 处理 | 输出 |
|---|---|---|---|
ping |
CF IP 段 | TCP 443 探测,收集 N 个低延迟有效 IP | ip.txt |
latency |
ip.txt |
建隧道测真实代理延迟 | latency.csv latency.txt |
speed |
latency.csv |
下载测速,按速度档 + 延迟排序 | speed.csv speed.txt |
export |
任一 IP 文件 | 生成可导入节点 | result.txt |
auto 即依次执行上述四步,中间结果同时落盘。
命令参考
auto — fast-xray [NODE] [OPTIONS]
| 参数 | 默认 | 说明 |
|---|---|---|
[NODE] / --node-file |
— | 节点 URL,或从文件读取 |
-n, --count |
50 | 阶段 1 收集的有效 IP 数 |
--lat-top |
0 | 阶段 2 保留的最快 IP 数(0 = 全部) |
--speed-top |
0 | 最终节点数(0 = 全部) |
--speed-concurrency |
1 | 测速并发数(1 最准,调大更快) |
-6, --ipv6 |
off | 同时测 IPv6 |
--ping-max |
300 | 第一次 ping(TCP)延迟上限 ms |
--lat-max |
0 | 第二次 ping(真实延迟)上限 ms(0 关闭) |
--min-speed |
0 | 最低速度 MB/s(0 关闭) |
-o, --output |
result | 输出目录 |
-v, --verbose |
off | 打印各阶段结果表 |
auto 使用各阶段默认的超时、并发、丢包等参数;需精调时单独运行子命令。
easy — fast-xray easy [NODE] --speed <MB/s> [OPTIONS]
只要一个够快的 IP 就停。后台持续用 ping + latency 补充有效 IP 队列(低于 30 时补到 50);前台用 5 个独立 worker 并发筛,谁测完谁立刻取下一个,互不等待。并发下直接达到 --speed 的直接命中;有潜力的(≥ 目标/5)记入确认队列,等手头这批并发跑完后再**逐个单独(无并发)**测速确认真实速度,第一个达标的即为结果,直接输出可复制的节点。
先直连国内镜像(清华 TUNA)做一次 8 秒的不走代理下载测速,作为带宽上限:--speed 高于它直接判定不可能;镜像偶发不可用则跳过、照常搜索。搜索中每累计 100 次失败会重测一次直连速度,本机链路变慢时按新值下调默认目标(显式 --speed 则不动)。
| 参数 | 默认 | 说明 |
|---|---|---|
[NODE] / --node-file |
— | 节点 URL,或从文件读取 |
--speed |
直连×80% | 目标下载速度 MB/s,返回首个达标 IP;不填则取直连测速的 80% |
--max |
100 | 最多遍历多少个有效 IP(通过 ping + latency);用尽仍无达标即「找不到」 |
-6, --ipv6 |
off | 同时搜索 IPv6 |
-o, --output |
result | 输出目录(写 result.txt) |
固定参数:ping 并发 100、≤200ms;latency 并发 10、≤200ms;测速 5 路并发筛、有潜力的单独确认、每次上限 5s;有效队列水位 30/50。
ping — fast-xray ping [OPTIONS]
| 参数 | 默认 | 说明 |
|---|---|---|
-n, --count |
50 | 目标有效 IP 数,达成即停 |
-t, --timeout |
3 | TCP 连接超时(秒) |
-c, --concurrency |
100 | 并发数 |
-6, --ipv6 |
off | 同时测 IPv6 |
-p, --port |
443 | 探测端口 |
--max-probe |
count×100 | 探测预算上限 |
--times |
1 | 每 IP 探测次数(>1 启用丢包过滤) |
--min / --max |
10 / 300 | 平均延迟区间 ms |
--max-loss |
0 | 丢包率上限 0–1 |
-o / -v |
result | 输出目录 / 结果表 |
latency — fast-xray latency [NODE] [OPTIONS]
| 参数 | 默认 | 说明 |
|---|---|---|
[NODE] / --node-file |
— | 节点 |
-i, --input |
result/ip.txt | 输入 IP 列表 |
-c, --concurrency |
50 | 并发隧道数 |
-t, --timeout |
5 | 单 IP 超时(秒) |
--max |
0 | 真实延迟上限 ms(0 关闭) |
-p, --top |
0 | 保留最快 N(0 全部) |
-o / -v |
result | 输出目录 / 结果表 |
speed — fast-xray speed [NODE] [OPTIONS]
| 参数 | 默认 | 说明 |
|---|---|---|
[NODE] / --node-file |
— | 节点 |
-i, --input |
result/latency.csv | 输入(IP + 延迟) |
-c, --concurrency |
1 | 并发下载数 |
-t, --timeout |
10 | 单 IP 下载上限(秒) |
--bytes |
10000000 | 每 IP 下载字节数 |
--min |
0 | 最低速度 MB/s(0 关闭) |
-p, --top |
0 | 保留最优 N(0 全部) |
-o / -v |
result | 输出目录 / 结果表 |
排序:速度每 0.1 MB/s 一档,先比档位,同档按延迟升序。
export — fast-xray export [NODE] [OPTIONS]
| 参数 | 默认 | 说明 |
|---|---|---|
[NODE] / --node-file |
— | 节点 |
-i, --input |
result/ip.txt | 有效 IP(纯 IP 或 CSV,取首列) |
-o, --output |
result | 输出目录 |
别名按输入列自动适配:speed.csv → 速度-延迟-ip,latency.csv → 延迟-ip,纯 IP → ip。
输出
默认写入 result/:ip.txt、latency.{csv,txt}、speed.{csv,txt}、result.txt(最终可导入节点)。