Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

添加支持 测速单个、全部 IP #15

Closed
peaceanddemocracy opened this issue Dec 4, 2020 · 38 comments
Closed

添加支持 测速单个、全部 IP #15

peaceanddemocracy opened this issue Dec 4, 2020 · 38 comments
Labels
功能建议 功能与建议

Comments

@peaceanddemocracy
Copy link

cloudflare使用的ssl协议在部分电脑上不支持,软件就扫不出来,希望改进通过https的证书来识别cloudflare,结果更精确

@XIU2
Copy link
Owner

XIU2 commented Dec 4, 2020

这要是多老的电脑才不支持?

@peaceanddemocracy
Copy link
Author

和电脑没关系,应该是系统环境问题

@XIU2
Copy link
Owner

XIU2 commented Dec 4, 2020

没有见过这种问题,请提供相关复现步骤,或者相关系统环境。
如果只是小众环境,那就算了。

@XIU2
Copy link
Owner

XIU2 commented Dec 4, 2020

另外,我无法理解你说的:通过https的证书来识别cloudflare 是什么意思,这和测速有什么关系?为什么会结果更精确?
目前软件是从指定的 IP 段中抽取一些 IP 先进行 TCP 延迟测速(对 IP 的 443 端口发送数据),然后排序后,再根据延迟顺序进行下载测速。

如果电脑不支持 TLS 1.2 及以上的 TLS 版本,那么只会导致下载测速失败,并不会导致延迟测速失败。

@XIU2
Copy link
Owner

XIU2 commented Dec 4, 2020

看了下,目前 Cloudflare 是优先使用 TLS 1.3 ,如果用户端不支持则降级为 TLS 1.2,都属于目前主流的 TLS 协议版本。
目前 TLS 1.3 协议已经普及几年了,TLS 1.2 就更早了,基本上除了古老的系统外,最起码也支持 TLS 1.2,所以软件并不会去特意支持这些古老的系统。

目前软件的下载测速是对测速地址域名指定 IP 访问下载文件,使用更低版本的 TLS 协议可能会无法连接,而且不符合安全规范。

@XIU2 XIU2 closed this as completed Dec 4, 2020
@peaceanddemocracy
Copy link
Author

比如这个ip 35.200.109.86 ,实测速度很快,结果不在扫描结果中

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

我前面说了,软件是先测速延迟,再根据延迟排序(从低到高),然后再根据延迟排序结果从低到高的顺序去下载测速。

延迟低的不一定速度快,但是延迟低的出现速度快的概率更高。

你说的这种情况,就是在测速到这个 IP 之前,就已经满足下载测速数量要求(默认 20 个)而停止下载测速了。

你可以通过启动参数设置条件来使测速结果更符合你的要求。

-tl 200 -sl 5 -dn 10

# 启动参数中加入这三个参数,分别是 200ms、5MB/s、10个(只有同时满足这三个条件的 IP 才会结束下载测速)。
# 即这个 IP 延迟要低于 200ms,下载速度高于 5MB/s,凑够 10 个才会结束。
# 你可以根据你的需求,设置合适的条件,这样测速结果会更加符合你的要求。

# 没有添加这些参数时,默认是没有延迟和下载速度条件的,只有默认的数量条件(-dn 20),这时候不管测速结果如何,都只会进行 20 次下载测速,完成后就会停止下载测速并显示结果。

@peaceanddemocracy
Copy link
Author

不是的,你可以试试在ip.txt只添加这一个ip段,202.81.235.92/25,中间的ip 202.81.235.92这个是实测过的,而且80和443端口都开着,但软件扫不到

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

你这两个 IP 是从来找的?Cloudflare 公开的所有 IP 段里并没有包含这两个 IP。

https://www.cloudflare.com/ips/

@peaceanddemocracy
Copy link
Author

cloudflare与运营商有合作,有些ip是运营商的cdn分发,速度也很快,你是不是这个设置了排除cf官方ip段了?

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

我都不知道有这玩意,怎么可能会特意去排除。

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

目前软件是只支持 IP 最后一段为 0 的 IP 段,因为最后一位是要随机的。
所以你用这个 202.81.235.92/25 实际上测速时,并不是 .92 而是随机的一个(1~255),所以延迟测速失败。

@peaceanddemocracy
Copy link
Author

懂了,有没有考虑过逐个ip依次查询

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

我给改改,改成如果最后一段不是 0,那么就不随机了,保留最后一段(如 .92)。

@peaceanddemocracy
Copy link
Author

好的,可以在脚本中设置随机扫描或者逐个扫描,实测过程中个别ip其实有运营商加成作用(个别地区移动把这些ip通过内网连到香港移动落地,所以同一个段有时个别ip可以满速而其他ip速度一般)

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

逐个扫描的话,可能会因为 IP 太多而测速时间很长。

@peaceanddemocracy
Copy link
Author

这个问题不大,我限定ip范围就行,反正比较好的ip1-2个就行

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

你下载这个试试(Windows 64位)。
新加了一个 -allip 参数,带上该参数将会测速全部 IP(不带就是每个 IP 段随机一个)。
不带这个参数时,使用 202.81.235.92/25 时将指定为 .92
带这个参数时,使用 202.81.235.92/25 时将指定为 .1~.126

不带这个参数时,如果要每个 IP 段随机一个,则要使用 202.81.235.0/25

CloudflareST.zip

你在测试时,我再加个检测更新功能算了,越早加越好。

@peaceanddemocracy
Copy link
Author

不错,试了下,没问题

@peaceanddemocracy
Copy link
Author

感谢大佬

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

等我写好检测更新功能就会发布。

如果有新版本则会在运行结束时提示,或者使用 -v 来主动检查更新。

@peaceanddemocracy
Copy link
Author

好的,发现个问题,
由于采用了all ip扫描,有些不支持cf的ip显示速度为0,此时程序根据延迟排序,导致结果有偏差,延迟低的速度为0也就是不支持cf的ip

@peaceanddemocracy
Copy link
Author

比如,
IP 地址,已发送,已接收,丢包率,平均延迟,下载速度 (MB/s)
109.166.37.113,4,4,0.00,159.65,0.00
109.166.37.30,4,4,0.00,159.65,0.00
109.166.37.123,4,4,0.00,164.05,0.00
109.166.37.71,4,4,0.00,164.05,0.00
109.166.37.18,4,4,0.00,167.45,0.00
109.166.37.111,4,4,0.00,168.45,0.00
109.166.37.15,4,4,0.00,176.25,0.00
109.166.37.37,4,4,0.00,180.90,0.00
109.166.37.27,4,4,0.00,180.90,0.00
109.166.37.4,4,4,0.00,180.90,0.00
109.166.37.118,4,4,0.00,188.95,0.00
109.166.37.124,4,4,0.00,188.95,0.00
109.166.37.98,4,4,0.00,210.20,0.00
109.166.37.29,4,4,0.00,214.10,0.00
109.166.37.63,4,4,0.00,222.15,0.00
109.166.37.73,4,4,0.00,222.15,0.00
109.166.37.75,4,4,0.00,245.80,0.00
109.166.37.79,4,4,0.00,264.40,0.00
109.166.37.112,4,3,0.25,152.80,0.00
109.166.37.21,4,3,0.25,160.20,0.00

要扫的ip结尾是37.88,实际出来上面这些没什么关系的ip

@peaceanddemocracy
Copy link
Author

建议加上-allip后直接根据速度排序,不考虑延迟,延迟只显示作参考

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

我前面说了,你设置个过滤条件就能解决。
加个 -sl 5 参数,这样就过滤掉 5MB/s 以下的。

我前面说了:
不带 -allip 参数时,使用 202.81.235.92/25 时将指定为 .92
带 -allip 参数时,使用 202.81.235.92/25 时将指定为 .1~.126
不带 -allip 参数时,如果要每个 IP 段随机一个(.1~.126),则要使用 202.81.235.0/25

@peaceanddemocracy
Copy link
Author

好的可以,谢谢

@peaceanddemocracy
Copy link
Author

还有个问题,测速发现如果ip.txt过大会导致内存臃肿,能否考虑逐行读取ip.txt

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

那样会效率低,鱼与熊掌不可兼得。

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

发布正式版本了。

更新内容

  1. 新增 测速全部 IP 参数 -allip添加支持 测速单个、全部 IP #15
    带上该参数则会测速每个 IP 段的每个 IP (仅 IPv4),默认是每个 IP 段随机测速一个 IP。
  2. 新增 检查版本更新 功能。
    如果有新版本,软件会在运行结束时提示,或者你可以用 -v 参数主动检查版本更新。
  3. 优化 解析 IP 段算法(IPv4)。
    如果想要测速单独 IP,只要在 IP 后面加上 /32 子网掩码即可。

@XIU2 XIU2 added the 功能建议 功能与建议 label Dec 5, 2020
@felixding
Copy link

cloudflare与运营商有合作,有些ip是运营商的cdn分发,速度也很快,你是不是这个设置了排除cf官方ip段了?

请问怎么样找到这样的IP列表呢?

@XIU2
Copy link
Owner

XIU2 commented Dec 5, 2020

@zhezhe168 同问。

如果想要继续帮助项目,希望可以提供一下这些非公开 Cloudflare CDN IP 段的寻找方法~

有需要的人如果不嫌麻烦也可以折腾折腾~

@peaceanddemocracy
Copy link
Author

目前批量ip探测没有特别好的方法,还在研究中,个别ip可以,但还是比较费时

@XIU2
Copy link
Owner

XIU2 commented Dec 7, 2020

@zhezhe168 描述具体点?

@XIU2
Copy link
Owner

XIU2 commented Dec 9, 2020

@zhezhe168 就像前面说的,如果不支持 Cloudflare,那么就无法下载测速,所以你只需要把 IP 段都给加到 ip.txt,然后用 -allip 全部测速一遍,凡是下载测速 0.00 的都是不支持 Cloudflare 的 IP。
这样就能过滤出来支持 Cloudflare 的 IP 了,这些 IP 往往都是连续的(组成一个 IP 段)。

另外为了效率,你也可以把下载测速时间降低为 2 秒-dt 2,毕竟只下载速度不是 0.00 就能判断是不是 Cloudflare 节点了,没必要跑完 5 秒,这样就节省了一大半时间(还有你可以把延迟测速次数改为 1 次 -t 1)。

@XIU2 XIU2 changed the title 扫描结果不准确 添加支持 测速单个、全部 IP Dec 9, 2020
@XIU2
Copy link
Owner

XIU2 commented Dec 11, 2020

@zhezhe168 v1.4.4 版本已经完全支持 IP 段 /24~/32 的子网掩码解析了。
所以如果要测速单个 IP,子网掩码需要是 /32 而不能随便写了。

也不会再把 x.x.x.x/30 解析为 x.x.x.0/30 了。

@XIU2
Copy link
Owner

XIU2 commented Dec 24, 2020

刚刚更新修复了一个 BUG,你如果在大量扫描 IP 的话,肯定遇到过,就是下载测速卡住的情况。

修复这个 BUG 后,你再去大量扫描 IP 就会舒服很多了,不用担心卡住了。


v1.4.6 更新内容

  1. 修复 下载测速时间不准确、卡住的问题。
    下载测速时,可能会遇到实际测速时间明显超过 -dt 指定的时间,甚至发生下载测速卡住的情况。

@peaceanddemocracy
Copy link
Author

@huanx9 最近比较忙,抽空我再研究下,目前在研究ws。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
功能建议 功能与建议
Projects
None yet
Development

No branches or pull requests

4 participants
@felixding @peaceanddemocracy @XIU2 and others