上个月的时候由于 Cloudflare 更新了用户协议,明确禁止了使用 Cloudflare 的进行代理服务,导致我之前一直使用的双域名优选 IP 的方案不好再继续使用。
想了想还是得从客户端入手,毕竟用户改 IP 关我站长什么事。
原先我自己其实也有本地的优选 IP 方案,但是每次更新 IP 都要在本地执行一个脚本来刷新 hosts,比较麻烦。
于是想到使用 vless 指定 IP,然后再在 transport 中指定伪装域名的方式来实现。
说干就干,立马写了一个脚本来实现这个方案。
简单说明一下这个脚本的实现逻辑,通过 https://www.wetest.vip/ 提供的「Cloudflare优选IP」服务,获取到 Cloudflare 的优选 IP 信息,然后通过脚本解析传入的 vless 分享链接列表中以 cf:// 开头的链接,并按格式用优选 IP 替换掉 vless 中的 IP 地址,然后返回新的 vless 链接列表。
实现了这个功能以后已经可以在 Clash 中使用优选 IP 了,但是我这边又遇到问题,在 Clash 中一旦触发了延迟测试,会向所有的节点发送请求,导致 Cloudflare 不再转发我的请求。(暂不知道是 Cloudflare 还是我这边运营商的问题)
为了解决这个问题,我将优选 IP 的节点从中随机选择一个返回,然后设置 Clash 自动更新,这样每次就会随机选择一个返回。
为了方便这些脚本的组织与执行,我使用的 Cloudflare Worker。有需要的可以参考我的 Cloudflare Worker Sub 仓库。
源仓库 fork 自 cmliu,感谢大佬的贡献。