Cloudflare VLESS IP Tester
一个面向 VLESS + WS + TLS 节点的 Cloudflare IP 筛选与真实链路测速工具。
项目分为两类能力:
cfst:从 Cloudflare IPv4 段中随机抽样,筛出 TCP 可连通 IP。auto/xrayst:基于本地 Xray 内核,将候选 IP 写入 VLESS outbound,测试真实代理链路的延迟和下载速度。
最终输出是可直接导入客户端的 VLESS 节点列表,节点别名格式为 速度-延迟-ip,例如 12.34M-156ms-103.21.244.162。
Requirements
| 依赖 | 说明 |
|---|---|
| Python | 3.13+ |
| uv | Python 项目与依赖管理 |
| Xray | 默认路径 tools/xray.exe |
初始化依赖:
uv sync
查看入口命令:
uv run auto
uv run cfst
uv run xrayst
Quick Start
Windows 下推荐直接使用 run.ps1:
powershell -ExecutionPolicy Bypass -File .\run.ps1 "vless://你的节点"
run.ps1 只接受一个 VLESS 参数,并固定执行:
- 第一阶段随机抽取
3000个 IP,按 TCP 延迟保留前500个,并发200。 - 第二阶段读取第一阶段结果,保留真实延迟前
50个,并发30,timeout8s。 - 第三阶段读取第二阶段全部结果测速,最终保留前
20个;默认下载10MB,硬性总耗时上限10s。
完整流程:
uv run auto 'vless://你的节点' -r 1000 -p 10 -c 20 --speed-count 50
这条命令会执行:
- 随机抽取
1000个 Cloudflare IP。 - 第一阶段用 TCP 443 探测连通性。
- 第二阶段用 Xray 测真实代理延迟,并保留延迟最低的
10个。 - 第三阶段从延迟结果中取前
50个做真实下载测速。 - 最终按速度档位和延迟排序,输出前
10个节点到txt/result.txt。
Pipeline
auto.py 支持分阶段运行,前一阶段输出会作为后一阶段输入。
| 阶段 | 命令 | 输入 | 输出 |
|---|---|---|---|
ping |
uv run auto --stage ping -r 1000 -p 500 -c 20 |
Cloudflare IPv4 段 | txt/auto_01_ping_ips.txt |
latency |
uv run auto --stage latency 'vless://你的节点' -p 200 -c 20 --latency-timeout 8 |
txt/auto_01_ping_ips.txt |
txt/auto_02_latency.txt |
speed |
uv run auto --stage speed 'vless://你的节点' --speed-count 50 -p 10 |
txt/auto_02_latency.txt |
txt/result.txt |
Stage 1: Ping
随机抽取 Cloudflare IP,并测试 TCP 443 是否可连通。
uv run auto --stage ping -r 1000 -p 500 -c 20
行为:
- 通过的 IP 会实时追加写入
txt/auto_01_ping_ips.txt。 - 控制台会实时输出
OK或FAIL。 - 阶段结束后会按 TCP 探测延迟升序排序,并只保留前
-p个写回文件。 - 这一阶段不需要 VLESS 节点。
Stage 2: Latency
读取第一阶段输出,通过 Xray 临时代理测试真实 VLESS 链路延迟。
uv run auto --stage latency 'vless://你的节点' -p 200 -c 20 --latency-timeout 8
配置:
| 项 | 值 |
|---|---|
| 输入文件 | txt/auto_01_ping_ips.txt |
| 输出文件 | txt/auto_02_latency.txt |
| 测试地址 | https://www.google.com/generate_204 |
| Timeout | 默认 3s,可用 --latency-timeout 调整 |
| 排序规则 | 延迟低的优先 |
-p 控制这一阶段保留多少个结果。
Stage 3: Speed
读取第二阶段输出,通过 Xray 临时代理测试真实下载速度。
uv run auto --stage speed 'vless://你的节点' --speed-count 50 -p 10 --speed-concurrency 1 --speed-timeout 10
配置:
| 项 | 值 |
|---|---|
| 输入文件 | txt/auto_02_latency.txt |
| 输出文件 | txt/result.txt |
| 下载地址 | https://cachefly.cachefly.net/50mb.test |
| 实际读取 | 10MB |
| Timeout | 默认 10s,是硬性总耗时上限 |
排序规则:
- 速度每
1 Mbps一个档位。 - 速度档位高的优先。
- 同档位按延迟低的优先。
参数关系:
--speed-count:从第二阶段结果中取多少个 IP 做速度测试,0表示全部。--speed-concurrency:第三阶段速度测试并发数,默认1。--speed-timeout:第三阶段单个下载测速 timeout,默认10s。-p:最终写入txt/result.txt的节点数量。
VLESS Rewrite
输入节点示例:
vless://uuid@xxxxxxx:443?encryption=none&security=tls&type=ws&path=%2Fpath#name
测试某个候选 IP 时,工具会生成等价 Xray outbound:
| 字段 | 值 |
|---|---|
| outbound address | 候选 IP |
| outbound port | 443 |
| TLS SNI | 原始域名 |
| WebSocket Host | 原始域名 |
| WebSocket path | 原始 path |
最终节点示例:
vless://uuid@xxxx-ip:443?encryption=none&security=tls&insecure=0&allowInsecure=0&type=ws&host=xxxx&path=%2Fpath#12.34M-156ms-xxxx-ip
Commands
auto
主入口,支持完整流程和分阶段运行。
uv run auto [node] [options]
常用参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--stage |
all |
可选 all、ping、latency、speed |
-r, --random-count |
100 |
第一阶段随机抽取的 IP 数量 |
-p, --top |
10 |
当前阶段保留数量;speed 阶段表示最终输出数量 |
-c, --concurrency |
20 |
ping 和 latency 阶段并发数 |
--node-file |
无 | 从文件读取 VLESS 节点,适合避免命令行中的 & 被 shell 解析 |
--latency-timeout |
3 |
latency 阶段真实延迟测试 timeout 秒数 |
--speed-count |
0 |
speed 阶段取多少个延迟结果测试速度,0 表示全部 |
--speed-concurrency |
1 |
speed 阶段并发测速数量 |
--speed-timeout |
10 |
speed 阶段单个下载测速 timeout 秒数 |
--xray |
tools/xray.exe |
Xray 内核路径 |
--ping-output |
txt/auto_01_ping_ips.txt |
第一阶段输出 |
--latency-output |
txt/auto_02_latency.txt |
第二阶段输出 |
-o, --output |
txt/result.txt |
最终节点输出 |
run.ps1
Windows PowerShell 入口,用于固定执行推荐三阶段流程。VLESS URL 包含 &,不建议再用 .bat 直接接收参数。
powershell -ExecutionPolicy Bypass -File .\run.ps1 "vless://你的节点"
等价于依次执行:
uv run auto --stage ping -r 3000 -p 500 -c 200
uv run auto --stage latency --node-file "临时节点文件" -p 50 -c 30 --latency-timeout 8
uv run auto --stage speed --node-file "临时节点文件" --speed-count 0 -p 20
cfst
Cloudflare IPv4 探测工具。
uv run cfst --fetch --pick-count 300 -p 20
用途:
- 拉取 Cloudflare IPv4 段。
- 随机抽样测试 TCP 或 ICMP 连通性。
- 输出较快 IP 和完整 CSV。
xrayst
对指定 IP 或 IP 组做真实 Xray 测试。
uv run xrayst --node 'vless://你的节点' --ip 103.21.244.162
uv run xrayst --node 'vless://你的节点' --ips 103.21.244.162,104.18.178.45
Description