fast-xray

节点配置要求见 docs/NODE_CONFIGURATION.md。

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,不适用本工具。

使用

Linux transparent-proxy bypass

On a Linux host that redirects outbound traffic through a transparent proxy, use:

fast-xray chuan --socket-mark 2

--socket-mark sets Linux SO_MARK before connecting TCP probes, VLESS tunnels, and baseline downloads. The host must have a matching bypass rule, such as meta mark 2 return, before its transparent-proxy redirect rules. The option is global and also works with ping, latency, speed, easy, and web.

Without this option, existing routing behavior is preserved. An explicit mark on an unsupported platform or without socket-marking permission fails at startup. Cloudflare range-list fetching and system DNS keep their existing networking behavior; the mark applies to measurement connections. A marked connection still uses the tested VLESS node, but bypasses the host's additional proxy layer.

完整流程(无子命令即 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(最终可导入节点)。

S
Description
No description provided
Readme
408 KiB
0.2.0
Latest
2026-06-26 02:54:50 +00:00
Languages
Rust 87.1%
HTML 6.6%
JavaScript 6.3%