暴力搜索 CloudFlare 节点 IP

274 天前
 bybyte

众所周知,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 资源,这时候上网体验不佳,代码里可以自己调整并发量

4667 次点击
所在节点    分享创造
28 条回复
dianso
273 天前
已经安全用了四五年了
没被封过一次
ws cf
molezznet
273 天前
好像 cf 网上讨论主要是用段时间会阻断几分钟
https://github.com/XIU2/CloudflareSpeedTest/issues/217

另外支持 v6 可能会不容易阻断些
Stoney
273 天前
这就是 cf 优选 ip 吧
godmiracle
273 天前
和 CloudflareST 寻找最优 ip 原理一样吗
molezznet
273 天前
Performing first stage
█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 17743/1524736

这…… 看起来是很暴力啊
molezznet
273 天前
有没有可能随机一个比例, 这 2 个 stage 还没跑完 ……
yuanmomo
273 天前
op 这个版本扫描的是 cf 的 ip 。还有一个东西是扫国内 ip ,然后往 ip 发送一个 https 的请求,带上一个域名,通过返回值来判断这个机器是不是一个会转发请求的类似 cdn 的节点。这个可以明确是有的,曾经有用过,用了好几年,但是是别人给我的,这样通过这个节点,随随便便上 10MB/s 。坏处就是这个节点随时可能会挂,挂了需要继续找。
bybyte
273 天前
@molezznet 我用了半个月了,目前还没问题
bybyte
273 天前
@yuanmomo 你说的是扫那些反代 cf 的服务器 ip 吧
bybyte
273 天前
@molezznet 毕竟 100 多万个 ip ,确实,整个要跑要花几十分钟
zictos
273 天前
@bybyte #10 CloudflareST 每次只跑 6000 个左右的 ip ,不知道每次的 ip 变不变的,据说是每次每个 ip 段随机使用一个 ip
bybyte
273 天前
@zictos 6000 个太少了吧,总共 100 多万个 ip 呢
zictos
273 天前
@bybyte #12 反正我用他的脚本跑出来的延迟一般都有 100 多 ms 以上,不过速度也可以接受,比不使用优选 ip 好了无数倍,他的每次测完延迟也会测试前面 10 个延迟最低的 ip 的下载速度,按下载速度排序,也可以在他的脚本执行完毕后自己根据延迟和下载速度并用一定的权重计算一个分数,找出综合的最优 ip 。
我在考虑把每次用过的 ip ( hosts 中用过的)都记录到数据库并添加使用时的时间戳,以后再测速的时候再从最近用过的 ip 中挑 10 个出来一起测。
molezznet
273 天前
@zictos 好吧 还真没记录过那些使用过的
bybyte
273 天前
@zictos 我是所有都扫一遍出来,再排序,按下载速度排序这个功能确实可以加一下
molezznet
273 天前
@bybyte 别,延迟好挺好了。否则时间更久呐。

![image]( https://i2.100024.xyz/2024/02/22/hay68w.webp)
一个多小时
molezznet
273 天前
另一个电脑更慢,冲 2 小时去了
[img]https://i2.100024.xyz/2024/02/22/hc50xf.webp[/img]
zictos
273 天前
@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
akirageorge
273 天前
能不能出一个针对 ipv6 的 cf 地址延迟的搜索程序呢?
molezznet
273 天前
@akirageorge 也有需求

不过这样只能随机选些,量太大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1017366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX