mirror of
https://github.com/XIU2/CloudflareSpeedTest.git
synced 2026-03-11 09:25:57 +08:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12039f4850 | ||
|
|
129deeaf71 |
@@ -9,7 +9,7 @@
|
|||||||
国外很多网站都在使用 Cloudflare CDN,但分配给中国访客的 IP 并不友好。
|
国外很多网站都在使用 Cloudflare CDN,但分配给中国访客的 IP 并不友好。
|
||||||
虽然 Cloudflare 公开了所有 [IP 段](https://www.cloudflare.com/ips/) ,但想要在这么多 IP 中找到适合自己的,怕是要累死,所以就有了这个软件。
|
虽然 Cloudflare 公开了所有 [IP 段](https://www.cloudflare.com/ips/) ,但想要在这么多 IP 中找到适合自己的,怕是要累死,所以就有了这个软件。
|
||||||
|
|
||||||
该软件可以**测试 Cloudflare CDN 所有 IP 的延迟和速度,获得最快 IP**!
|
该软件可以**测试 Cloudflare CDN 所有 IP 的延迟和速度,获得最快 IP**!觉得好用请**点个⭐~**
|
||||||
你可以将 IP 添加到 `Hosts` 文件中,以提高访问使用 Cloudflare CDN 的网站速度!
|
你可以将 IP 添加到 `Hosts` 文件中,以提高访问使用 Cloudflare CDN 的网站速度!
|
||||||
|
|
||||||
****
|
****
|
||||||
@@ -42,6 +42,8 @@ IP 地址 已发送 已接收 丢包率 平均延迟 下载速度
|
|||||||
|
|
||||||
完整结果保存在当前目录下的 `result.csv` 文件中,用**记事本/表格软件**打开,排序为**延迟由低到高**,分别是:
|
完整结果保存在当前目录下的 `result.csv` 文件中,用**记事本/表格软件**打开,排序为**延迟由低到高**,分别是:
|
||||||
|
|
||||||
|
> 大家可以按照自己的需求,对完整测速数据**进一步筛选处理**!
|
||||||
|
|
||||||
```
|
```
|
||||||
IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s)
|
IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s)
|
||||||
104.27.199.141, 4, 4, 0.00, 139.52, 11.71
|
104.27.199.141, 4, 4, 0.00, 139.52, 11.71
|
||||||
|
|||||||
26
main.go
26
main.go
@@ -17,7 +17,7 @@ var disableDownload bool
|
|||||||
var tcpPort int
|
var tcpPort int
|
||||||
var ipFile string
|
var ipFile string
|
||||||
var outputFile string
|
var outputFile string
|
||||||
var printResult int
|
var printResultNum int
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
var downloadSecond int64
|
var downloadSecond int64
|
||||||
@@ -59,7 +59,7 @@ https://github.com/XIU2/CloudflareSpeedTest
|
|||||||
flag.IntVar(&downloadTestCount, "dn", 20, "下载测速数量")
|
flag.IntVar(&downloadTestCount, "dn", 20, "下载测速数量")
|
||||||
flag.Int64Var(&downloadSecond, "dt", 5, "下载测速时间")
|
flag.Int64Var(&downloadSecond, "dt", 5, "下载测速时间")
|
||||||
flag.StringVar(&url, "url", "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png", "下载测速地址")
|
flag.StringVar(&url, "url", "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png", "下载测速地址")
|
||||||
flag.IntVar(&printResult, "p", 20, "显示结果数量")
|
flag.IntVar(&printResultNum, "p", 20, "显示结果数量")
|
||||||
flag.BoolVar(&disableDownload, "dd", false, "禁用下载测速")
|
flag.BoolVar(&disableDownload, "dd", false, "禁用下载测速")
|
||||||
flag.StringVar(&ipFile, "f", "ip.txt", "IP 数据文件")
|
flag.StringVar(&ipFile, "f", "ip.txt", "IP 数据文件")
|
||||||
flag.StringVar(&outputFile, "o", "result.csv", "输出结果文件")
|
flag.StringVar(&outputFile, "o", "result.csv", "输出结果文件")
|
||||||
@@ -91,8 +91,8 @@ https://github.com/XIU2/CloudflareSpeedTest
|
|||||||
if url == "" {
|
if url == "" {
|
||||||
url = "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png"
|
url = "https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png"
|
||||||
}
|
}
|
||||||
if printResult == 0 {
|
if printResultNum < 0 {
|
||||||
printResult = 20
|
printResultNum = 20
|
||||||
}
|
}
|
||||||
if ipFile == "" {
|
if ipFile == "" {
|
||||||
ipFile = "ip.txt"
|
ipFile = "ip.txt"
|
||||||
@@ -150,20 +150,24 @@ func main() {
|
|||||||
ExportCsv(outputFile, data) // 输出结果到文件
|
ExportCsv(outputFile, data) // 输出结果到文件
|
||||||
}
|
}
|
||||||
|
|
||||||
// 直接输出结果
|
printResult(data) // 显示最快结果
|
||||||
if printResult > 0 { // 如果禁用下载测速就跳过
|
}
|
||||||
|
|
||||||
|
// 显示最快结果
|
||||||
|
func printResult(data []CloudflareIPData) {
|
||||||
|
if printResultNum > 0 { // 如果禁用下载测速就跳过
|
||||||
dateString := convertToString(data) // 转为多维数组 [][]String
|
dateString := convertToString(data) // 转为多维数组 [][]String
|
||||||
if len(dateString) > 0 { // IP数组长度(IP数量) 大于 0 时继续
|
if len(dateString) > 0 { // IP数组长度(IP数量) 大于 0 时继续
|
||||||
if len(dateString) < printResult { // 如果IP数组长度(IP数量) 小于 打印次数,则次数改为IP数量
|
if len(dateString) < printResultNum { // 如果IP数组长度(IP数量) 小于 打印次数,则次数改为IP数量
|
||||||
printResult = len(dateString)
|
printResultNum = len(dateString)
|
||||||
fmt.Println("\n[信息] IP数量小于显示结果数量,显示结果数量改为IP数量。\n")
|
fmt.Println("\n[信息] IP数量小于显示结果数量,显示结果数量改为IP数量。\n")
|
||||||
}
|
}
|
||||||
fmt.Printf("%-16s%-5s%-5s%-5s%-6s%-11s\n", "IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)")
|
fmt.Printf("%-16s%-5s%-5s%-5s%-6s%-11s\n", "IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)")
|
||||||
for i := 0; i < printResult; i++ {
|
for i := 0; i < printResultNum; i++ {
|
||||||
fmt.Printf("%-18s%-8s%-8s%-8s%-10s%-15s\n", ipPadding(dateString[i][0]), dateString[i][1], dateString[i][2], dateString[i][3], dateString[i][4], dateString[i][5])
|
fmt.Printf("%-18s%-8s%-8s%-8s%-10s%-15s\n", ipPadding(dateString[i][0]), dateString[i][1], dateString[i][2], dateString[i][3], dateString[i][4], dateString[i][5])
|
||||||
}
|
}
|
||||||
if outputFile != "" {
|
if outputFile != "" {
|
||||||
fmt.Printf("\n完整内容请查看 %v 文件。请按 回车键 或 Ctrl+C 退出。", outputFile)
|
fmt.Printf("\n完整测速结果已写入 %v 文件,请使用记事本/表格软件查看。按下 回车键 或 Ctrl+C 退出。", outputFile)
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("\n请按 回车键 或 Ctrl+C 退出。")
|
fmt.Printf("\n请按 回车键 或 Ctrl+C 退出。")
|
||||||
}
|
}
|
||||||
@@ -172,5 +176,7 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
fmt.Println("\n[信息] IP数量为 0,跳过输出结果。")
|
fmt.Println("\n[信息] IP数量为 0,跳过输出结果。")
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf("\n测速结果已写入 %v 文件,请使用记事本/表格软件查看。", outputFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user