mirror of
https://github.com/XIU2/CloudflareSpeedTest.git
synced 2026-03-08 07:35:52 +08:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c0e8732cc | ||
|
|
8820c5f982 | ||
|
|
d50c4806a6 | ||
|
|
306ce709c9 | ||
|
|
956a35cab0 | ||
|
|
3d49bb13ed | ||
|
|
3ddd66b3c1 | ||
|
|
9aa64db555 | ||
|
|
9654cb8ea6 |
80
README.md
80
README.md
@@ -13,22 +13,44 @@
|
||||
你可以将 IP 添加到 `Hosts` 文件中,以提高访问使用 Cloudflare CDN 的网站速度!
|
||||
|
||||
****
|
||||
### 快速使用
|
||||
## 快速使用
|
||||
|
||||
### 下载运行
|
||||
|
||||
1. 下载编译好的可执行文件 [蓝奏云](https://xiu.lanzoux.com/b0742hkxe) / [Github](https://github.com/XIU2/CloudflareSpeedTest/releases) 并解压。
|
||||
2. 双击运行 `CloudflareST.exe`文件(Windows),等待测速...
|
||||
|
||||
> **注意:Linux 系统**请先赋予执行权限 `chmod +x CloudflareST` ,然后再执行 `./CloudflareST` 。
|
||||
|
||||
测速完毕后,会显示**最快**的 20 个 IP,完整结果则保存在当前目录下的 `result.csv` 文件中,用**记事本或表格软件**打开,排序为**延迟由低到高**,每一列用逗号分隔,分别是:
|
||||
### 结果示例
|
||||
|
||||
测速完毕后,会直接显示**最快的 20 个 IP**,示例:
|
||||
|
||||
```
|
||||
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)
|
||||
104.27.200.105 4 4 0.00 135.77 13.21
|
||||
104.27.205.105 4 4 0.00 136.65 17.33
|
||||
104.27.207.105 4 4 0.00 136.97 5.55
|
||||
104.27.193.105 4 4 0.00 146.97 16.54
|
||||
104.27.206.105 4 4 0.00 148.04 1.65
|
||||
104.27.192.105 4 4 0.00 148.97 9.08
|
||||
104.27.195.105 4 4 0.00 150.29 21.00
|
||||
104.27.197.105 4 4 0.00 151.04 13.61
|
||||
104.27.203.105 4 4 0.00 151.54 15.73
|
||||
104.27.204.105 4 4 0.00 151.94 8.32
|
||||
```
|
||||
|
||||
完整结果保存在当前目录下的 `result.csv` 文件中,用**记事本/表格软件**打开,排序为**延迟由低到高**,分别是:
|
||||
|
||||
```
|
||||
IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s)
|
||||
104.27.70.18, 4, 4, 0.00, 150.79, 12.89
|
||||
104.27.200.105, 4, 4, 0.00, 135.77, 13.21
|
||||
```
|
||||
|
||||
选择一个平均延迟与下载速度都不错的 IP 放到 `Hosts` 文件中(指向使用 Cloudflare CDN 的网站域名)。
|
||||
|
||||
****
|
||||
### 进阶使用
|
||||
## 进阶使用
|
||||
|
||||
直接双击运行使用的是默认参数,如果想要测试速度更快、测试结果更全面,可以自定义参数。
|
||||
|
||||
@@ -50,60 +72,64 @@ https://github.com/XIU2/CloudflareSpeedTest
|
||||
延迟测速端口;延迟测速 TCP 协议的端口;(默认 443)
|
||||
-dn 20
|
||||
下载测速数量;延迟测速并排序后,从最低延迟起下载测速数量,请勿太多(速度慢);(默认 20)
|
||||
-dt 10
|
||||
下载测速时间;单个 IP 测速最长时间,单位:秒;(默认 10)
|
||||
-dt 5
|
||||
下载测速时间;单个 IP 测速最长时间,单位:秒;(默认 5)
|
||||
-url https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png
|
||||
下载测速地址;用来 Cloudflare CDN 测速的文件地址,如含有空格请加上引号;
|
||||
-p 20
|
||||
直接显示结果;测速后直接显示指定数量的结果,为 -1 时不显示结果直接退出;(默认 20)
|
||||
显示结果数量;测速后直接显示指定数量的结果,为 0 时不显示结果直接退出;(默认 20)
|
||||
-f ip.txt
|
||||
IP 数据文件;相对/绝对路径,如包含空格请加上引号;支持其他 CDN IP段,记得禁用下载测速;(默认 ip.txt)
|
||||
IP 数据文件;如含有空格请加上引号;支持其他 CDN IP段,记得禁用下载测速;(默认 ip.txt)
|
||||
-o result.csv
|
||||
输出结果文件;相对/绝对路径,如包含空格请加上引号;为空格时不输出结果文件( -o " " );允许其他后缀;(默认 result.csv)
|
||||
输出结果文件;如含有空格请加上引号;为空格时不输出结果文件(-o " ");允许其他后缀;(默认 result.csv)
|
||||
-dd
|
||||
禁用下载测速;如果带上该参数就是禁用下载测速;(默认 启用)
|
||||
-v
|
||||
打印程序版本
|
||||
-h
|
||||
打印帮助说明
|
||||
|
||||
示例:
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p 20 -f "ip.txt" -o "" -dd
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "ip.txt" -o "result.csv" -dd
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "C:\abc\ip.txt" -o "C:\abc\result.csv" -dd
|
||||
```
|
||||
|
||||
#### 使用示例
|
||||
> 如果**下载速度都是 0.00**,那说明默认的**下载测速地址**用的人太多又到上限了,**请去这个 [Issues](https://github.com/XIU2/CloudflareSpeedTest/issues/6) 获得解决方法!**
|
||||
|
||||
### 使用示例
|
||||
|
||||
在 CMD 中运行,或者把启动参数添加到快捷方式中。
|
||||
> **注意:** 不需要加上所有参数,按需选择,参数前后顺序随意。
|
||||
> **提示: Linux 系统**只需要把下面命令中的 **.exe 删除**即可通用。
|
||||
|
||||
``` cmd
|
||||
# CMD 示例
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10
|
||||
# 命令行示例
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5
|
||||
|
||||
# 指定 IP数据文件,不输出结果文件,直接显示结果(-p 20 条)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p 20 -f "ip.txt" -o " " -dd
|
||||
# 指定 IP数据文件,不显示结果直接退出(-p 值为 0)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -p 0 -f "ip.txt" -dd
|
||||
|
||||
# 指定 IP数据文件 及 输出结果文件(相对路径,即当前目录下)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "ip.txt" -o "result.csv" -dd
|
||||
# 指定 IP数据文件,不输出结果到文件,直接显示结果(-p 值为 20 条)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -p 20 -f "ip.txt" -o " " -dd
|
||||
|
||||
# 指定 IP数据文件 及 输出结果文件(绝对路径,即 C:\abc\ 目录下)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "C:\abc\ip.txt" -o "C:\abc\result.csv" -dd
|
||||
# 指定 IP数据文件 及 输出结果到文件(相对路径,即当前目录下,如果包含空格请加上引号)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -f ip.txt -o result.csv -dd
|
||||
|
||||
# 指定 IP数据文件 及 输出结果到文件(绝对路径,即 C:\abc\ 目录下,如果包含空格请加上引号)
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -f C:\abc\ip.txt -o C:\abc\result.csv -dd
|
||||
|
||||
# 指定下载测速地址(要求:可以直接下载的文件、文件大小超过 200MB、网站用的是 Cloudflare CDN),如果包含空格请加上引号
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -url https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png
|
||||
```
|
||||
|
||||
``` cmd
|
||||
# 快捷方式示例(右键快捷方式 - 目标)
|
||||
## 如果有引号就放在引号外面,记得引号和 - 之间有空格。
|
||||
"D:\Program Files\CloudflareST\CloudflareST.exe" -n 500 -t 4 -dn 20 -dt 10
|
||||
"D:\Program Files\CloudflareST\CloudflareST.exe" -n 500 -t 4 -dn 20 -dt 5
|
||||
```
|
||||
|
||||
****
|
||||
### 感谢项目
|
||||
## 感谢项目
|
||||
* https://github.com/Spedoske/CloudflareScanner
|
||||
|
||||
意外发现了这个项目,看了之后发现正好解决了我的问题,但是我更喜欢用户命令行方式运行,这样会更方便、有更多使用姿势,于是我临时学了下 Golang 并 Fork 按照我自己的需求修改了一下(包括但不限于命令行方式交互、直接输出结果等),如果有什么问题可以告诉我,虽然我不一定会~
|
||||
|
||||
****
|
||||
### 许可证
|
||||
## 许可证
|
||||
The GPL-3.0 License.
|
||||
|
||||
35
main.go
35
main.go
@@ -22,8 +22,8 @@ var printResult int
|
||||
func init() {
|
||||
var downloadSecond int64
|
||||
var printVersion bool
|
||||
const help = `
|
||||
CloudflareSpeedTest
|
||||
var help = `
|
||||
CloudflareSpeedTest ` + version + `
|
||||
测试 Cloudflare CDN 所有 IP 的延迟和速度,获取最快 IP!
|
||||
https://github.com/XIU2/CloudflareSpeedTest
|
||||
|
||||
@@ -36,33 +36,30 @@ https://github.com/XIU2/CloudflareSpeedTest
|
||||
延迟测速端口;延迟测速 TCP 协议的端口;(默认 443)
|
||||
-dn 20
|
||||
下载测速数量;延迟测速并排序后,从最低延迟起下载测速数量,请勿太多(速度慢);(默认 20)
|
||||
-dt 10
|
||||
下载测速时间;单个 IP 测速最长时间,单位:秒;(默认 10)
|
||||
-dt 5
|
||||
下载测速时间;单个 IP 测速最长时间,单位:秒;(默认 5)
|
||||
-url https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png
|
||||
下载测速地址;用来 Cloudflare CDN 测速的文件地址,如含有空格请加上引号;
|
||||
-p 20
|
||||
直接显示结果;测速后直接显示指定数量的结果,为 -1 时不显示结果直接退出;(默认 20)
|
||||
显示结果数量;测速后直接显示指定数量的结果,值为 0 时不显示结果直接退出;(默认 20)
|
||||
-f ip.txt
|
||||
IP 数据文件;相对/绝对路径,如包含空格请加上引号;支持其他 CDN IP段,记得禁用下载测速;(默认 ip.txt)
|
||||
IP 数据文件;如含有空格请加上引号;支持其他 CDN IP段,记得禁用下载测速;(默认 ip.txt)
|
||||
-o result.csv
|
||||
输出结果文件;相对/绝对路径,如包含空格请加上引号;为空格时不输出结果文件( -o " " );允许其他后缀;(默认 result.csv)
|
||||
输出结果文件;如含有空格请加上引号;为空格时不输出结果文件(-o " ");允许其他后缀;(默认 result.csv)
|
||||
-dd
|
||||
禁用下载测速;如果带上该参数就是禁用下载测速;(默认 启用)
|
||||
-v
|
||||
打印程序版本
|
||||
-h
|
||||
打印帮助说明
|
||||
|
||||
示例:
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p 20 -f "ip.txt" -o " " -dd
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "ip.txt" -o "result.csv" -dd
|
||||
CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "C:\abc\ip.txt" -o "C:\abc\result.csv" -dd`
|
||||
打印帮助说明`
|
||||
|
||||
flag.IntVar(&pingRoutine, "n", 500, "测速线程数量")
|
||||
flag.IntVar(&pingTime, "t", 4, "延迟测速次数")
|
||||
flag.IntVar(&tcpPort, "tp", 443, "延迟测速端口")
|
||||
flag.IntVar(&downloadTestCount, "dn", 20, "下载测速数量")
|
||||
flag.Int64Var(&downloadSecond, "dt", 10, "下载测速时间")
|
||||
flag.IntVar(&printResult, "p", 20, "直接显示结果")
|
||||
flag.Int64Var(&downloadSecond, "dt", 5, "下载测速时间")
|
||||
flag.StringVar(&url, "url", "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png", "下载测速地址")
|
||||
flag.IntVar(&printResult, "p", 20, "显示结果数量")
|
||||
flag.BoolVar(&disableDownload, "dd", false, "禁用下载测速")
|
||||
flag.StringVar(&ipFile, "f", "ip.txt", "IP 数据文件")
|
||||
flag.StringVar(&outputFile, "o", "result.csv", "输出结果文件")
|
||||
@@ -91,6 +88,9 @@ https://github.com/XIU2/CloudflareSpeedTest
|
||||
if downloadSecond <= 0 {
|
||||
downloadSecond = 10
|
||||
}
|
||||
if url == "" {
|
||||
url = "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png"
|
||||
}
|
||||
if printResult == 0 {
|
||||
printResult = 20
|
||||
}
|
||||
@@ -107,11 +107,12 @@ func main() {
|
||||
failTime = pingTime // 设置接收次数
|
||||
ips := loadFirstIPOfRangeFromFile(ipFile) // 读入IP
|
||||
pingCount := len(ips) * pingTime // 计算进度条总数(IP*测试次数)
|
||||
bar := pb.Full.Start(pingCount) // 进度条总数
|
||||
bar := pb.Simple.Start(pingCount) // 进度条总数
|
||||
var wg sync.WaitGroup
|
||||
var mu sync.Mutex
|
||||
var data = make([]CloudflareIPData, 0)
|
||||
|
||||
fmt.Println("# XIU2/CloudflareSpeedTest " + version + "\n")
|
||||
fmt.Println("开始延迟测速(模式:TCP,端口:" + strconv.Itoa(tcpPort) + "):")
|
||||
control := make(chan bool, pingRoutine)
|
||||
for _, ip := range ips {
|
||||
|
||||
Reference in New Issue
Block a user