7 Commits

Author SHA1 Message Date
xiu2
a392fddd3a 修复 没有设置下载速度下限条件时输出测速结果数量异常的问题 2025-07-21 21:13:20 +08:00
xiu2
2bb2f509d9 README.md 2025-07-21 15:00:01 +08:00
xiu2
3cf898701f README.md 2025-07-14 20:16:24 +08:00
xiu2
74267eb2ac README.md 2025-07-09 20:50:03 +08:00
xiu2
bf1bd561da README.md 2025-07-09 20:48:11 +08:00
xiu2
b5e741ea3e README.md 2025-07-09 20:42:44 +08:00
xiu2
6099b48007 README.md 2025-07-09 20:39:42 +08:00
2 changed files with 29 additions and 14 deletions

View File

@@ -15,7 +15,7 @@
> _[**UserScript** - 🐵 Github 高速下载、知乎增强、自动无缝翻页、护眼模式 等十几个**油猴脚本**~](https://github.com/XIU2/UserScript) <img src="https://img.shields.io/github/stars/XIU2/UserScript.svg?style=flat-square&label=Star&color=4285dd&logo=github" height="16px" />_ > _[**UserScript** - 🐵 Github 高速下载、知乎增强、自动无缝翻页、护眼模式 等十几个**油猴脚本**~](https://github.com/XIU2/UserScript) <img src="https://img.shields.io/github/stars/XIU2/UserScript.svg?style=flat-square&label=Star&color=4285dd&logo=github" height="16px" />_
> _[**SNIProxy** - 🧷 自用的简单 SNI Proxy支持全平台、全系统、前置代理、配置简单等~](https://github.com/XIU2/SNIProxy) <img src="https://img.shields.io/github/stars/XIU2/SNIProxy.svg?style=flat-square&label=Star&color=4285dd&logo=github" height="16px" />_ > _[**SNIProxy** - 🧷 自用的简单 SNI Proxy支持全平台、全系统、前置代理、配置简单等~](https://github.com/XIU2/SNIProxy) <img src="https://img.shields.io/github/stars/XIU2/SNIProxy.svg?style=flat-square&label=Star&color=4285dd&logo=github" height="16px" />_
> 本项目也支持对**其他 CDN / 网站 IP** 延迟测速(如:[CloudFront](https://github.com/XIU2/CloudflareSpeedTest/discussions/304)、[Gcore](https://github.com/XIU2/CloudflareSpeedTest/discussions/303) CDN下载测速需自行寻找地址 当然了,本项目也支持对 **`其他 CDN / 多个解析 IP 的网站`** 延迟测速,但相对应的下载测速地址需自行寻找
> [!IMPORTANT] > [!IMPORTANT]
> Cloudflare CDN 已**明文禁止代理**方式使用,对于**代理套 CDN** 的自行承担风险,请勿过度依赖 [#382](https://github.com/XIU2/CloudflareSpeedTest/discussions/382) [#383](https://github.com/XIU2/CloudflareSpeedTest/discussions/383) > Cloudflare CDN 已**明文禁止代理**方式使用,对于**代理套 CDN** 的自行承担风险,请勿过度依赖 [#382](https://github.com/XIU2/CloudflareSpeedTest/discussions/382) [#383](https://github.com/XIU2/CloudflareSpeedTest/discussions/383)
@@ -137,6 +137,9 @@ IP 地址,已发送,已接收,丢包率,平均延迟,下载速度(MB/s),地区
104.27.200.69,4,4,0.00,146.23,28.64,LAX 104.27.200.69,4,4,0.00,146.23,28.64,LAX
``` ```
> [!NOTE]
> _如果你发现**下载速度为 0.00**,那么可以用**调试模式 `-debug`** 排查一下,详见:[**# 下载测速都是 0.00 **](https://github.com/XIU2/CloudflareSpeedTest#-%E4%B8%8B%E8%BD%BD%E6%B5%8B%E9%80%9F%E9%83%BD%E6%98%AF-000-)_
> _大家可以按自己需求对完整结果**进一步筛选处理**,或者去看一看进阶使用**指定过滤条件**_ > _大家可以按自己需求对完整结果**进一步筛选处理**,或者去看一看进阶使用**指定过滤条件**_
**** ****
@@ -208,7 +211,7 @@ https://github.com/XIU2/CloudflareSpeedTest
调试输出模式;会在一些非预期情况下输出更多日志以便判断原因;(默认 关闭) 调试输出模式;会在一些非预期情况下输出更多日志以便判断原因;(默认 关闭)
目前该功能仅针对 HTTPing 延迟测速过程 及 下载测速过程,当过程中因为各种原因导致当前 IP 测速中断都会输出错误原因 目前该功能仅针对 HTTPing 延迟测速过程 及 下载测速过程,当过程中因为各种原因导致当前 IP 测速中断都会输出错误原因
例如HTTPing 延迟测速过程中,因为 HTTP 状态码不符合或测速地址有问题或超时等原因而终止测速 例如HTTPing 延迟测速过程中,因为 HTTP 状态码不符合或测速地址有问题或超时等原因而终止测速
例如下载测速过程中因为下载测速地址有问题被阻断、403状态码、超时等原因而终止测速 例如下载测速过程中因为下载测速地址有问题被阻断、403状态码、超时等原因而终止测速(导致显示 0.00
-v -v
打印程序版本 + 检查版本更新 打印程序版本 + 检查版本更新
@@ -684,31 +687,41 @@ cfst.exe -f 1.txt
<summary><code><strong>「 点击展开 查看内容 」</strong></code></summary> <summary><code><strong>「 点击展开 查看内容 」</strong></code></summary>
**** ****
**\#\# 原理简单解释:**
首先要明白,本软件的下载测速过程,本质上和你将 `IP 下载测速地址域名` 写入 hosts 文件,然后浏览器去访问下载测速地址是一样的,只不过软件将其自动化了(类似于 `curl -I --resolve 下载测速地址域名:443:IP https://下载测速地址`)。 首先要明白,CFST 下载测速过程,本质上和你将 `IP 下载测速地址域名` 写入 hosts 文件,然后浏览器去访问下载测速地址是一样的,只不过软件将其自动化了(类似于 `curl -I --resolve 下载测速地址域名:443:IP https://下载测速地址`)。
因此如果下载测速结果全都是 0.00 MB/s那么以为着下载测速失败,就只有这几种可能性 因此如果下载测速结果全都是 0.00 MB/s那么代表**下载测速过程中出问题报错**,导致直接终止测速了(并最终显示为 0.00,就只有这几种可能性
1. **下载测速地址有问题** 1. **下载测速地址有问题**
2. **测速的 IP 地址有问题** 2. **测速的 IP 地址有问题**
3. **你的网络有问题** 3. **你的网络有问题**
但在排查具体是哪个问题前,可以先在你原先的 CFST 运行命令后追加一个 `-debug` 参数来开启调试模式,重新跑一边测速,这样下载过程中报错了就能直接看到下载测速失败的具体原因。 ****
常见的下载测速失败报错原因有(因为是原生报错信息,因此基本都是英文): **\#\# 调试模式排查:**
接下来**请务必**先在你原先使用的 CFST 运行命令后**追加一个 `-debug` 参数来开启调试模式**,重新跑一遍测速,这样下载测速过程中出现任何报错都会显示具体原因方便你排查。
常见的下载测速失败报错原因有(因为是 Go 语言的原生报错信息,因此基本都是英文):
1. `... read: connection reset by peer ... ` 1. `... read: connection reset by peer ... `
下载测速地址被阻断了,可能是蔷干的,也可能是运营商干的(比如移动或部分地区的白名单) **链接被重置**,可能是下载测速地址被阻断了,可能是蔷干的,也可能是运营商干的(比如移动或部分地区的白名单)
2. `... HTTP 状态码: 403 ...` 2. `... HTTP 状态码: 403 ...`
像这种直接提示 HTTP 状态码的,比较好判断,如 403 就是测速地址禁止你访问404 就是测速地址找不到文件,具体可以搜索 HTTP 状态码含义 像这种直接提示 **HTTP 状态码**的,比较好判断,如 403 就是下载测速地址禁止你访问404 就是下载测速地址路径对应的文件找不到,具体可以搜索 HTTP 状态码含义
3. `... context deadline exceeded (Client.Timeout exceeded while awaiting headers) ...` 3. `... context deadline exceeded (Client.Timeout exceeded while awaiting headers) ...`
这种一般是超时引起的,可能是 IP 网络问题,也可能是 -dt 下载测速时间设置的太短了当然默认的 10 秒到不至于超时 这种一般是**请求超时**引起的,可能是 IP 网络问题,也可能是 -dt 下载测速时间设置的太短了当然默认的 10 秒肯定算不上短)
4. `...tls: handshake failure...` 或 `...tls: failed to verify certificate...` 4. `... tls: handshake failure ...` 或 `... tls: failed to verify certificate ...`
这种 TLS 握手失败/TLS 证书错误 代表下载测速地址和测速 IP 服务器不匹配,也就是 下载测速地址测速 IP 其中一方有误(例如下载测速地址是托管在 Fastly CDN 的,但测速 IP 是 Cloudflare CDN 的,或者反过来,总之就是 IP 服务器告诉你这个网站域名它不认识并把你拒之门外) 这种 **TLS 握手失败/TLS 证书错误** 代表下载测速地址和测速 IP 服务器不匹配,也就是下载测速地址测速 IP 其中一方有误(例如下载测速地址是托管在 Fastly CDN 的,但测速 IP 是 Cloudflare CDN 的,或者反过来,总之就是你访问下载测速地址时该测速的 IP 服务器告诉你这个网站域名它不认识并把你拒之门外)
5. `... tls: failed to verify certificate: x509: certificate signed by unknown authority.`
这种代表**系统证书配置有问题**,导致 TLS 握手时无法验证证书,一般是 Termux 内可能会遇到的解决方法见https://github.com/XIU2/CloudflareSpeedTest/discussions/61#discussioncomment-13745059
> 如果你遇到了其他报错原因,且翻译后还是不懂,可以发 Issues 或 Discussions 询问 > 如果你遇到了其他报错原因,且翻译后还是不懂,可以发 Issues 或 Discussions 询问,我也会更新到这里。
> 但注意,发 Issues 或 Discussions 询问时,请记得带上**调试模式下 CFST 输出的完整内容(或者完整截图)**。
根据上面的报错原因排查一遍后,如果还是无法解决,那么可以尝试下面这些: 根据上面的报错原因排查一遍后,如果还是无法解决,那么可以尝试下面这些进一步排查
****
**一、下载测速地址有问题** **一、下载测速地址有问题**

View File

@@ -89,7 +89,9 @@ func TestDownloadSpeed(ipSet utils.PingDelaySet) (speedSet utils.DownloadSpeedSe
} }
} }
bar.Done() bar.Done()
if utils.Debug && len(speedSet) == 0 { // 调试模式下,没有满足速度限制的数据,返回所有测速数据供用户查看当前的测速结果,以便适当调低预期测速条件 if MinSpeed == 0.00 { // 如果没有设置下载速度下限,则直接返回所有测速数据
speedSet = utils.DownloadSpeedSet(ipSet)
} else if utils.Debug && len(speedSet) == 0 { // 如果设置了下载速度下限,且是调试模式下,且没有找到任何一个满足条件的 IP 时,返回所有测速数据,供用户查看当前的测速结果,以便适当调低预期测速条件
fmt.Println("\033[33m[调试] 没有满足 下载速度下限 条件的 IP忽略条件返回所有测速数据方便下次测速时调整条件。\033[0m") fmt.Println("\033[33m[调试] 没有满足 下载速度下限 条件的 IP忽略条件返回所有测速数据方便下次测速时调整条件。\033[0m")
speedSet = utils.DownloadSpeedSet(ipSet) speedSet = utils.DownloadSpeedSet(ipSet)
} }