mirror of
https://github.com/XIU2/CloudflareSpeedTest.git
synced 2026-03-09 08:05:57 +08:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a392fddd3a | ||
|
|
2bb2f509d9 | ||
|
|
3cf898701f | ||
|
|
74267eb2ac | ||
|
|
bf1bd561da | ||
|
|
b5e741ea3e | ||
|
|
6099b48007 |
39
README.md
39
README.md
@@ -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" />_
|
||||
> _[**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]
|
||||
> 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
|
||||
```
|
||||
|
||||
> [!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 延迟测速过程中,因为 HTTP 状态码不符合或测速地址有问题或超时等原因而终止测速
|
||||
例如:下载测速过程中,因为下载测速地址有问题(被阻断、403状态码、超时)等原因而终止测速
|
||||
例如:下载测速过程中,因为下载测速地址有问题(被阻断、403状态码、超时)等原因而终止测速(导致显示 0.00)
|
||||
|
||||
-v
|
||||
打印程序版本 + 检查版本更新
|
||||
@@ -684,31 +687,41 @@ cfst.exe -f 1.txt
|
||||
<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. **下载测速地址有问题**
|
||||
2. **测速的 IP 地址有问题**
|
||||
3. **你的网络有问题**
|
||||
|
||||
但在排查具体是哪个问题前,可以先在你原先的 CFST 运行命令后追加一个 `-debug` 参数来开启调试模式,重新跑一边测速,这样下载过程中报错了就能直接看到下载测速失败的具体原因。
|
||||
****
|
||||
|
||||
常见的下载测速失败报错原因有(因为是原生报错信息,因此基本都是英文):
|
||||
**\#\# 调试模式排查:**
|
||||
|
||||
接下来**请务必**先在你原先使用的 CFST 运行命令后**追加一个 `-debug` 参数来开启调试模式**,重新跑一遍测速,这样下载测速过程中出现任何报错都会显示具体原因方便你排查。
|
||||
|
||||
常见的下载测速失败报错原因有(因为是 Go 语言的原生报错信息,因此基本都是英文):
|
||||
|
||||
1. `... read: connection reset by peer ... `
|
||||
下载测速地址被阻断了,可能是蔷干的,也可能是运营商干的(比如移动或部分地区的白名单)
|
||||
**链接被重置**,可能是下载测速地址被阻断了,可能是蔷干的,也可能是运营商干的(比如移动或部分地区的白名单)
|
||||
2. `... HTTP 状态码: 403 ...`
|
||||
像这种直接提示 HTTP 状态码的,比较好判断,如 403 就是测速地址禁止你访问,404 就是测速地址找不到文件,具体可以搜索 HTTP 状态码含义
|
||||
像这种直接提示 **HTTP 状态码**的,比较好判断,如 403 就是下载测速地址禁止你访问,404 就是下载测速地址路径对应的文件找不到,具体可以搜索 HTTP 状态码含义
|
||||
3. `... context deadline exceeded (Client.Timeout exceeded while awaiting headers) ...`
|
||||
这种一般是超时引起的,可能是 IP 等网络问题,也可能是 -dt 下载测速时间设置的太短了,当然默认的 10 秒到不至于超时
|
||||
4. `...tls: handshake failure...` 或 `...tls: failed to verify certificate...`
|
||||
这种 TLS 握手失败/TLS 证书错误 代表下载测速地址和测速 IP 服务器不匹配,也就是 下载测速地址 与 测速 IP 其中一方有误(例如下载测速地址是托管在 Fastly CDN 的,但测速 IP 是 Cloudflare CDN 的,或者反过来,总之就是 IP 服务器告诉你这个网站域名它不认识并把你拒之门外)
|
||||
这种一般是**请求超时**引起的,可能是 IP 或网络问题,也可能是 -dt 下载测速时间设置的太短了(当然默认的 10 秒肯定算不上短)
|
||||
4. `... tls: handshake failure ...` 或 `... tls: failed to verify certificate ...`
|
||||
这种 **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 输出的完整内容(或者完整截图)**。
|
||||
|
||||
根据上面的报错原因排查一遍后,如果还是无法解决,那么可以尝试下面这些:
|
||||
根据上面的报错原因排查一遍后,如果还是无法解决,那么可以尝试下面这些进一步排查:
|
||||
|
||||
****
|
||||
|
||||
**一、下载测速地址有问题**:
|
||||
|
||||
|
||||
@@ -89,7 +89,9 @@ func TestDownloadSpeed(ipSet utils.PingDelaySet) (speedSet utils.DownloadSpeedSe
|
||||
}
|
||||
}
|
||||
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")
|
||||
speedSet = utils.DownloadSpeedSet(ipSet)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user