刚接触 CFST 的人,可能会迷惑明明延迟测速可用 IP 有 30 个,怎么最后只剩下 3 个了呢? 下载测速里的队列又是什么意思?难道我下载测速还要排队?
CFST 会先延迟测速,在这过程中进度条右侧会实时显示可用 IP 数量(可用: 30),但注意该可用数量指的是测试通过没有超时的 IP 数量,和延迟上下限、丢包条件无关。当延迟测速完成后,因为还指定了延迟上下限、丢包的条件,所以按照条件过滤后只剩下 10 个了(也就是等待下载测速的 队列:10)。
即以上示例中,321 个 IP 延迟测速完成后,只有 30 个 IP 测试通过没有超时,然后根据延迟上下限范围:40 ~ 150 ms 及丢包上限条件过滤后,只剩下 10 个满足要求的 IP 了。如果你 -dd 禁用了下载测速,那么就会直接输出这 10 个 IP 了。当然该示例并未禁用,因此接下来软件会继续对这 10 个 IP 进行下载测速(队列:10)。
另外,如果全部队列 IP 都测速完了,但一个满足下载速度条件的 IP 都没有,你可能需要调低预期的下载测速下限条件,但你需要知道当前的大概测速速度都在什么范围,那么你就可以加上 -debug 参数开启调试模式,这样再遇到这种情况时,就会忽略条件返回所有测速结果,你就能看到这些 IP 的下载速度都有多少,心里也就有数了,然后适当调低 -sl 再试试。
CloudflareSpeedTestDNS
一个强大的 CDN 测速工具,支持对 Cloudflare 等 CDN 服务商 进行延迟测速、优选 IP 同步到 DNS 解析,并提供持续监控功能。
✨ 主要特性
示例站点:Best Cloudflare ,Best Vercel
🚀 快速开始
📥 下载安装
cfst.exe(Windows)或./cfst(Linux/macOS),开始测速🐧 Linux/macOS 用户点击查看详细安装步骤🐳 Docker 用户点击查看详细说明Docker
Docker Compose(推荐)
📊 测速结果示例
测速完成后,程序会显示延迟最低、速度最快的 IP 地址。以下是典型输出示例:
完整结果将保存为
result.csv文件,可用 Excel、记事本等软件打开查看:⚙️ 进阶配置
默认配置适合大多数用户,如需更精确的测速结果,可通过配置文件或环境变量自定义参数。详细配置说明请参考示例配置文件或环境变量说明。
🖥️ 命令行参数
📖 界面说明
🔍 点击展开查看详细说明CFST 会先延迟测速,在这过程中进度条右侧会实时显示可用 IP 数量(
可用: 30),但注意该可用数量指的是测试通过没有超时的 IP 数量,和延迟上下限、丢包条件无关。当延迟测速完成后,因为还指定了延迟上下限、丢包的条件,所以按照条件过滤后只剩下10个了(也就是等待下载测速的队列:10)。即以上示例中,
321个 IP 延迟测速完成后,只有30个 IP 测试通过没有超时,然后根据延迟上下限范围:40 ~ 150 ms及丢包上限条件过滤后,只剩下10个满足要求的 IP 了。如果你-dd禁用了下载测速,那么就会直接输出这10个 IP 了。当然该示例并未禁用,因此接下来软件会继续对这10个 IP 进行下载测速(队列:10)。下载测速进度条中的
3 / 5,前者指的是找到了3个满足下载速度下限条件的 IP(即下载速度高于1 MB/s),后者5指的是你要求找到5个满足下载速度下限条件的 IP(-dn 5)。软件在测速完这
10个 IP 后,只找到了3个下载速度高于1 MB/s的 IP,剩下的7个 IP 都是 “不及格” 的。因此,这不是
“每次测速都不到 5 就中断了”,而是所有 IP 都下载测速完了,但却只找到了3个满足条件的。还有一种情况,那就是当可用 IP 很多时(几百几千),你还设置了下载速度条件,那么可能就会遇到:怎么下载测速进度条老是卡在
X / 5了呢?这其实并不是卡住了,而是只有当找到一个满足条件的 IP 时,进度条才会 +1,因此如果一直找不到,那么 CFST 就会一直下载测速下去,因此在表现为进度条卡住不动,但这也是在提醒你:你设置的下载速度条件对你来说已经高于实际了,你需要适当调低预期。
如果不想遇到这种全部测速一遍都没几个满足条件的情况,那么就要**调低下载速度上限参数
-sl**,或者移除。因为只要指定了
-sl参数,那么只要没有凑够-dn的数量(默认 10 个),就会一直测速下去,直到凑够或全部测速完。移除-sl并添加-dn 20参数,这样就是只测速延迟最低的前 20 个 IP,测速完就停止,节省时间。另外,如果全部队列 IP 都测速完了,但一个满足下载速度条件的 IP 都没有,你可能需要调低预期的下载测速下限条件,但你需要知道当前的大概测速速度都在什么范围,那么你就可以加上
-debug参数开启调试模式,这样再遇到这种情况时,就会忽略条件返回所有测速结果,你就能看到这些 IP 的下载速度都有多少,心里也就有数了,然后适当调低-sl再试试。同样,延迟测速方面,
可用: 30、队列:10这两个数值也可以让你清楚,你设置的延迟条件对你来说是否过于苛刻。如果可用 IP 一大堆,但条件过滤后只剩下 2、3 个,那不用说就知道需要调低预期的延迟/丢包条件了。这两个机制,一个是告诉你延迟丢包条件是否合适的,一个是告诉你下载速度条件是否合适的。
🌐 IPv4/IPv6 分离测速
通过以下配置项可分别指定 IPv4 和 IPv6 的测速数据:
ipv4_file:IPv4 段数据文件路径ipv6_file:IPv6 段数据文件路径同时指定两个文件时:
result.csv→result_ipv4.csv+result_ipv6.csv🔄 DNS 自动同步
阿里云 DNS
修改 config 中的
alidns部分:enable:是否启用阿里云 DNS (默认 false)accesskey_id:阿里云 AccessKey IDaccesskey_secret:阿里云 AccessKey Secretdomain:域名subdomain:子域名ttl:TTL 值 (默认 600)DNSPod DNS
修改 config 中的
dnspod部分:enable:是否启用 DNSPod DNS (默认 false)secret_id:DNSPod Secret IDsecret_key:DNSPod Secret Keydomain:域名subdomain:子域名ttl:TTL 值 (默认 600)Cloudflare DNS
修改 config 中的
cloudflare部分:enable:是否启用 Cloudflare DNS (默认 false)api_token:Cloudflare API Tokenzone_id:Cloudflare 域名的 Zone IDdomain:域名subdomain:子域名proxied:是否开启 Cloudflare 代理 (默认 false)ttl:TTL 值 (1为自动,默认 1)Cloudflare Workers KV
修改 config 中的
cfkv部分:enable:是否启用 Cloudflare KV (默认 false)api_token:Cloudflare API Tokenaccount_id:Cloudflare Account IDnamespace_id:Cloudflare KV Namespace ID同步到 Workers KV 的格式如下:
ipv4:IP,已发送,已接收,丢包率,平均延迟,下载速度,数据中心&…ipv4time:更新时间ipv6:IP,已发送,已接收,丢包率,平均延迟,下载速度,数据中心&…ipv6time:更新时间🚀 点击查看 Cloudflare Workers 部署步骤访问 Cloudflare Dashboard
创建 KV 存储:
创建 Workers:
绑定 Workers KV:
KV_NAMESPACE📈 持续监控
修改 config 中的
cron部分:enable:是否启用定时任务 (默认 false)latency_threshold:延迟阈值 (毫秒,默认 9999)loss_rate_threshold:丢包率阈值 (默认 1.0)check_interval:检测间隔 (分钟,默认 30)test_interval:强制刷新间隔 (小时,默认 24)test_interval重新测速并更新 DNS 记录check_interval分钟检测优选 IP 的延迟、丢包率,当延迟或丢包率超过阈值时自动重新测速并更新 DNS 记录🙏 致谢
本项目基于以下优秀项目开发:
🔧 从源码编译
如需从源码编译,请使用以下命令:
📄 开源协议
本项目采用 GPL-3.0 开源协议。