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 SNIWebSocket 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 + tlsencryption=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 丢包率上限 01
-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.txtlatency.{csv,txt}speed.{csv,txt}result.txt(最终可导入节点)。

S
Description
No description provided
Readme 355 KiB
0.2.0 Latest
2026-06-26 10:54:50 +08:00
Languages
Rust 86.7%
HTML 6.8%
JavaScript 6.5%