Notion 找到最快的host

原文链接: https://www.notion.so/jerrywang959/Notion-host-99260615ab2e41489119738b19cda456

原理

解析原理

Notion使用cloudflare作为cdn,理论上来说,可以将Notion的域名解析到cloudflare cdn的任意节点。
国内解析的Notion域名在不被污染的情况下只有两个ip,而Cloudflare作为外国的云服务提供商以及各种人对cloudflare cdn的滥用,导致这两个ip并不是在任何情况下都能顺畅地连接。
Cloudflare在全球有180多万个ipv4节点,总是存在一些节点是可以顺畅连接的,将Notion的域名解析到这些ip上,就可以顺畅访问Notion了

筛选原理

cloudflare在全球有180多万个ipv4节点,如果要遍历测试,会耗费大量的网络资源和硬件资源,因此需要筛选。
ipv4地址有4位,在某种程度上,我们可以认为前三位相同,最后一位不同的ipv4地址具有接近的网络环境。因此,你需要选择你最后一位的幸运数字,从1到255,作为第一步筛选。只取第四位是你的幸运数字的ip地址,这样需要测试的ip地址便从180万减少到六七千。
在这六七千ip地址中,并不是所有地址都可以顺畅访问的,也不是将notion.so域名解析到这些地址都是可以访问的,因此下一步是测试可用于notion.so的ip地址,为了轻量化,我们选择尝试下载Notion主页www.notion.so的html。此次筛选后,会得到1000左右可用的ipv4地址。
最后一步便是正式的测速了。第一个测速的必要时ping的丢包率,把ping50次的丢包率控制到10%以下,便会得到十几个甚至几个ip地址。一般来说,只要ping不丢包就可以了,如果对速度有更高的要求,可以考虑测试不同ip解析下下载Notion的js文件:
https://www.notion.so/app-4ca8cd21ec209cfc38a6.js
不同端的解决方法具体如下

Linux

克隆下面的储存库或者下载zip,按照具体的说明运行脚本即可
https://github.com/Jerrywang959/Notion-choose-ip

Windows

ToDo,集成在此储存库中
https://github.com/Jerrywang959/Notion-choose-ip

MacOS

我没有苹果电脑,希望有想法的大家一起出谋划策。希望直接给此储存库pr
https://github.com/Jerrywang959/Notion-choose-ip

Android

下载一个apk,叫做网络测试(我是在小米应用商店下载的,不充钱也可用,无广告)

在ping里面,找到ping设置,设置ping批量的执行次数为50

然后自己根据文章最开始的原理选择待筛选的ip地址,如果懒得找,可以复制下面文件中的ip地址到手机的粘贴版:
https://cdn.jsdelivr.net/gh/Jerrywang959/[email protected]/src/avaip.txt
进入批量ping的界面,添加地址,把刚才复制的多个ip复制粘贴进去,完成添加

然后选择执行,一段时间后,执行完毕。点击右上角的排序可以对结果进行简单排序。任选一个绿色的ip即可作为可用ip。如果没有绿色的ip,可以进去橙色的ip查看详情,丢包率不超过20%都可以用

安卓端改hosts可以使用此软件

打开后,添加一个dns或者直接用它的dns,改host需要改3个域名

其实对于安卓端来说,更好的是注册一个自己的红鱼安全dns,在系统设置里面设置“私人NDS”(或者叫做“安全DNS”)。在自己的红鱼dns里改host。

ios

我没有ios系统的手机,希望有想法的大家一起出谋划策

TO-DO

参考文献

https://linmi.cc/6133.html
https://github.com/schweikert/fping/blob/develop/doc/fping.pod