众所周知,WS 套 CF 是既安全又免费(国内支持 WS 的 CDN 价格极高),但是有些地区到 CF 默认分配的 IP 速度极慢,延迟几百不等,开个 Google 转半天。
所以写了个小工具,直接暴力搜索 CloudFlare 所有服务 IP 节点,最后选出速度最快的服务节点
https://github.com/golangboy/fast-cloudflare
有 docker 的直接运行就好
docker run -t golangboyme/fast-cloudflare
我找到一个延迟 20 多的 cf 节点
➜ Downloads ping 103.21.244.248
PING 103.21.244.248 (103.21.244.248): 56 data bytes
64 bytes from 103.21.244.248: icmp_seq=0 ttl=43 time=20.606 ms
64 bytes from 103.21.244.248: icmp_seq=1 ttl=43 time=20.243 ms
注意:搜索的时候会占用大量的 TCP 资源,这时候上网体验不佳,代码里可以自己调整并发量
1
dianso 304 天前
已经安全用了四五年了
没被封过一次 ws cf |
2
molezznet 304 天前
|
3
Stoney 304 天前 via iPhone
这就是 cf 优选 ip 吧
|
4
godmiracle 304 天前
和 CloudflareST 寻找最优 ip 原理一样吗
|
5
molezznet 304 天前
Performing first stage
█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 17743/1524736 这…… 看起来是很暴力啊 |
6
molezznet 304 天前
有没有可能随机一个比例, 这 2 个 stage 还没跑完 ……
|
7
yuanmomo 304 天前 via iPhone
op 这个版本扫描的是 cf 的 ip 。还有一个东西是扫国内 ip ,然后往 ip 发送一个 https 的请求,带上一个域名,通过返回值来判断这个机器是不是一个会转发请求的类似 cdn 的节点。这个可以明确是有的,曾经有用过,用了好几年,但是是别人给我的,这样通过这个节点,随随便便上 10MB/s 。坏处就是这个节点随时可能会挂,挂了需要继续找。
|
13
zictos 304 天前
@bybyte #12 反正我用他的脚本跑出来的延迟一般都有 100 多 ms 以上,不过速度也可以接受,比不使用优选 ip 好了无数倍,他的每次测完延迟也会测试前面 10 个延迟最低的 ip 的下载速度,按下载速度排序,也可以在他的脚本执行完毕后自己根据延迟和下载速度并用一定的权重计算一个分数,找出综合的最优 ip 。
我在考虑把每次用过的 ip ( hosts 中用过的)都记录到数据库并添加使用时的时间戳,以后再测速的时候再从最近用过的 ip 中挑 10 个出来一起测。 |
16
molezznet 304 天前
|
17
molezznet 304 天前
另一个电脑更慢,冲 2 小时去了
[img]https://i2.100024.xyz/2024/02/22/hc50xf.webp[/img] |
18
zictos 304 天前
@bybyte #15 下载不能测太多,要不太占资源,也太占 cf 的流量,CloudflareST 这个程序是默认只测延迟最低的 10 个 ip 的下载速度,排序要综合考虑,而不是单纯按下载速度或延迟排序。
CloudflareST 生成测速结果的 result.csv 文件的格式如下 IP 地址,已发送,已接收,丢包率,平均延迟,下载速度 (MB/s) 104.18.17.65,4,4,0.00,173.89,15.90 104.19.139.124,4,4,0.00,156.60,15.80 104.19.244.185,4,4,0.00,156.82,14.50 104.16.120.31,4,4,0.00,157.34,14.30 104.21.233.134,4,4,0.00,157.53,14.21 104.18.27.152,4,4,0.00,158.02,13.20 104.18.29.225,4,4,0.00,158.45,13.12 104.21.228.41,4,4,0.00,159.05,12.50 104.18.125.115,4,4,0.00,159.28,11.50 104.19.132.67,4,4,0.00,160.25,11.00 # 找出上述 ip 的最优 ip 的 python 代码 import pandas as pd df = pd.read_csv('result.csv') # 读取 result.csv 文件 total_latency = df['平均延迟'].sum() total_download_speed = df['下载速度 (MB/s)'].sum() df['Latency_Percentage'] = df['平均延迟'] / total_latency df['Download_Speed_Percentage'] = -(df['下载速度 (MB/s)'] / total_download_speed) df['Composite_Score'] = df['Latency_Percentage'] + df['Download_Speed_Percentage'] best_ip_row = df.loc[df['Composite_Score'].idxmin()] first_ip = best_ip_row['IP 地址'] print(first_ip) # 输出 104.19.139.124 |
19
akirageorge 304 天前
能不能出一个针对 ipv6 的 cf 地址延迟的搜索程序呢?
|
20
molezznet 304 天前
|
21
bybyte OP @akirageorge 完全没问题,过两天回学校就加上
|
23
bybyte OP @molezznet 因为你第一阶段扫出来的 ip 太多了,而第二阶段 ping 测延迟不能太大并发,不然整个网络拥堵了测出来的延迟不准。
|
25
iqoo 304 天前
先用 masscan 初筛一下,可以快几百倍。
|
27
sbilly 289 天前
golangboy 用 rust 了?
|