最近为了网络体验,我购买了几个代理提供商,一方面是为了做冗余来保证可用性,另一方面也是想测试一下哪一个的体验更好一点。这个提供商往往都会提供一个 Surge 的配置连接,使用者可以一键导入。然而,对于使用多个提供商的用户来说,手动切换就会比较麻烦。所以,我就自己写了一个简单的聚合服务,后端代码在这里,前端代码在这里

Disclaimer: 目前的实现没有 authorization 和 authentication,唯一的安全性保证是用户自己想一个复杂的 Config ID。另外,所有的配置都是明文存储的,不保证任何安全性。

思路

Surge-On 的思路就是让用户注册自己拥有的代理提供商的配置信息。Surge-On 提供一个 API 来获取聚合后的 Surge 配置。这个配置的生成思路如下:

  1. 将所有提供商的代理列表合并。
  2. 用户可以自定义 Proxy Group 以及对应的正则表达式。Surge-On 会把所有匹配上的代理放入这个 Proxy Group。
  3. 用户可以在 Surge-On 上自行填写 Rules,URL Rewrites,General 等配置。

Surge-On 提供的 URL 每次被请求时,都会请求用户注册的代理商,获取更新后的配置。

实现

后端的实现非常简单。因为最近又学习了一下 Rust,所以就用这个项目练了练手。这是我第一个使用 Rust 写项目,希望对 Rust 有经验的人可以给我提提意见。

前端使用 Vue 实现。因为我是一个后端开发,前端都是自己野路子随便看了看文档就开始写的,所以代码质量堪忧,轻喷。