哈哈哈,今天又来折腾 Cloudflare 了!

最近在 GitHub 上发现了一个挺有意思的开源项目:CloudflareSpeedTest。顾名思义,它是一个用来测试和优选 Cloudflare CDN IP 的工具。

这个项目是做什么的?

简单来说,就是帮我们从一堆候选 IP 中,找出当前网络环境下表现比较好的地址。

Cloudflare 为使用其 CDN 的网站提供网络加速服务,但并不是每个 IP 在我们的网络环境下都有一样好的表现。有些地址延迟比较高,有些可能存在丢包,还有些虽然连接延迟不错,实际下载速度却不理想。

这时候,我们就可以使用 CloudflareSpeedTest 来进行批量测速。它能够测试候选 IP 的连接延迟,并进一步测试下载速度,还会显示丢包率等信息,方便我们筛选出更合适的 IP。

项目地址:XIU2/CloudflareSpeedTest

它是怎么工作的?

整个思路其实并不复杂,可以拆成三个步骤。

第一步:批量测速。

运行工具,让它测试一批 Cloudflare 候选 IP,得到各个 IP 的延迟、丢包率和下载速度等信息。

第二步:筛选合适的 IP。

根据测速结果,挑选延迟较低、丢包较少、下载速度也比较理想的地址。这里不能只看延迟,因为我们最终想要的是更稳定、更流畅的网络体验,而不只是一个漂亮的延迟数字。

第三步:配置 hosts。

找到合适的 IP 后,可以在本机的 hosts 文件中,将需要访问的目标域名指向这个 IP。

简单理解,hosts 就像是一份本地的域名解析记录。正常情况下,系统会通过 DNS 查询域名对应的 IP;而当 hosts 中存在匹配记录时,系统就会优先使用我们指定的地址。

这样一来,访问对应域名时,就可以尝试连接我们筛选出来的 IP,而不是完全依赖常规 DNS 解析结果。

当然,这并不意味着所有网站都能因此加速。要优化的域名本身需要适用这种方式,而且要配置实际访问的目标域名;如果视频资源使用的是另一个 CDN 域名,只修改网站首页的域名也不一定有效。

我自己的测试体验

我最初关注这个项目,就是想改善某些网站的访问体验。

以前碰到网页加载慢、视频播放卡顿的情况,可能只能怀疑线路或者网络状态,排查起来也比较麻烦。现在可以先跑一遍测速,看看当前网络下哪些候选 IP 表现更好,再尝试将合适的 IP 配置到目标域名对应的 hosts 记录中。

实际测试下来,我这边的视频播放确实可以变得比较流畅,说明这种方法在我的测试场景中是有效的。

不过,这只是我当前网络环境下的测试结果,并不代表对所有地区、运营商和网站都有效。Cloudflare 使用的网络路由可能随网络环境和时间发生变化,今天表现不错的 IP,过段时间也可能不再合适。

顺手再做个自动化脚本

既然测速流程可以交给工具完成,后面还可以再折腾一下自动化。

比如写一个简单的脚本,在觉得网络变慢时自动运行 CloudflareSpeedTest,根据测速结果筛选合适的 IP,再更新指定域名对应的 hosts 记录。

这样就不用每次手动查 IP、复制地址、修改配置了。遇到卡顿,重新测试、更新配置,再验证一下效果即可。

不过,自动修改前最好保留原始配置,并设置合理的筛选条件和失败回退机制,避免一次不理想的测速反而影响正常访问。

最后

这个项目挺适合喜欢折腾网络的朋友。它不是什么神奇的加速器,而是把 IP 测试和筛选这件事自动化了,让我们有机会根据自己的网络环境,挑选更合适的连接地址。

如果你也在使用 Cloudflare,或者遇到某些网站访问不太顺畅的情况,可以去 GitHub 看看这个项目,按照自己的使用场景测试一下。

说不定折腾一番之后,原本卡顿的视频就能流畅播放了。哈哈哈,又学到一个实用的小工具!