XIU2 / CloudflareSpeedTest

🌩「自选优选 IP」测试 Cloudflare CDN 延迟和速度,获取最快 IP !当然也支持其他 CDN / 网站 IP ~
GNU General Public License v3.0
19.3k stars 3.77k forks source link

-dd 模式下,输出的结果是所有可用IP的延迟的排序,而不是前10个 #390

Open sztuxp opened 1 year ago

sztuxp commented 1 year ago

功能需求

希望 -dd模式下,能够输出前10延迟低的IP排序。另外,能否提供一个不测延迟只测试速度的的功能。

预期目标

我有上次的10个IP结果,用-dd模式测出最新10个延迟最低的IP, 我用脚本组合这20个IP, 然后软件用-allip模式排序出10个最快速度的IP(希望只测速,不测试延迟)。

charSLee013 commented 1 year ago

怎么感觉标题输出的结果是所有可用IP的延迟的排序与描述不符能够输出前10延迟低的IP排序

实际上每次测试后的结果都存在本地的result.csv文件中,终端显示的结果可以通过参数-p (显示结果数量)来进行修改 比如想在终端上显示所有可用IP的延迟的排序的,那么可以 -p 9999999设为最大值

希望只测速,不测试延迟

假设是使用TCPing来进行测速,每次TCP请求只有 20*5 = 100次 如果你想减少在延迟测速上的时间,可以修改参数 -t (延迟测速次数)-t 1 这样总的TCP 请求就下降到 20*2 = 40

更好的方案

我有上次的10个IP结果,用-dd模式测出最新10个延迟最低的IP, 我用脚本组合这20个IP, 然后软件用-allip模式排序出10个最快速度的IP(希望只测速,不测试延迟)。

实际上可以合并 上次结果+总的IP的文件,然后拿去测速 比如假设上次的结果为

# last.txt
1.1.1.1
2.2.2.2

那么可以将两个文件合并后再测速

cat last.txt ip.txt > scan_ip.txt
CloudflareSpeedTest -f ./scan_ip.txt

这样测试集里既包含上次最优结果,也有总IP测试最优结果

sztuxp commented 1 year ago

如果我的命令是延迟和测速一次完成,result.csv内只有10个IP,但用-dd参数,result.csv文件内结果有几千个IP,当然我也可以用脚本选择前10个出来,并和旧的合并,但总觉得不是很完美

charSLee013 commented 1 year ago

我大致明白了你的需求,下面按照逻辑顺序列出来:

  1. 对所有/随机 IP 仅进行延迟测试
  2. 挑选出前10的 IP 地址,与上次挑选的 IP 地址合并成新的20个IP
  3. 对这20个 IP 进行测速测试再挑选出最好的10个 IP 地址

实际上并不需要这么麻烦,因为主要的两次工作:

  1. 选出新的延迟最低前10 IP地址
  2. 对合并的20个 IP 地址进行测速

可以直接一次搞定:

  1. 将旧前10 IP地址写入到ip.txt
  2. 对所有/随机 IP 和旧前10 IP 进行延迟和测速测试
  3. 得出新的前10 IP 地址

测速 IP 的顺序是按照延迟和丢包率排序的,在满足下载速度要求的IP达到一定数量后,退出测速 唯一不足的地方就是测速的 IP 地址不一定包含上次前10 的IP地址 好处就是你可以保证目前得出的结果是自选后最优


如果一定要包含对旧前10 IP 地址进行测速,稍微写一下脚本比如下面的脚本算作一个样例

#!/usr/bin/env bash

#改名旧的前10
mv new_top_10.txt old_top_10.txt

# 仅进行延迟测试
CloudflareSpeedTest -dd

# 提取出新的前10
cat result.csv | sort -t, -k6nr | head -n 10 | awk -F',' '{print $1}' > new_top_10.txt

# 对20个IP进行测速测试
cat new_top_10.txt old_top_10.txt > test_ip.txt
CloudflareSpeedTest -f test_ip.txt -t 1

# 得出新的前10IP地址
cat result.csv
sztuxp commented 1 year ago

你的脚本真简洁,谢谢了!