杂谈,关于浏览器插件 SmartProxy

1. Background

这是一篇有感而发的文章,关于一款优秀的浏览器插件。

背景故事是这样的。
2017年的时候,Firefox 火狐浏览器带来了一次史无前例的大更新,也就是著名的 “Firefox Quantum”,版本号 57.0 。这个版本的火狐进行了大量的代码重构,除了肉眼可见的 UI 变化之外,这个版本最亮眼的莫过于巨大的性能提升,甚至一度超越了 Chrome。

当然有利就有弊,性能提升的代价是成千上万的扩展插件被抛弃。从这个版本开始,Firefox 放弃了旧的插件 API,转而使用了与 Chromium 浏览器生态兼容的 WebExtension。这直接导致了大量现有插件无法在新版本浏览器中运行,比如用户众多的 Firebug 插件。

而我当时一直使用的代理管理插件,AutoProxy (以及 Pan, 一个 AutoProxy + 广告屏蔽的集成插件) 自此也无法运行了。

2. Later

其实在使用 AutoProxy/Pan 的日子里,也发现了这两个年久失修的插件存在的不少问题,比如自定义规则列表没有自动去重。我遇到网页加载慢就会习惯性点一下“加入代理列表”,但是同一个网站实际上早被我加无数次了,列表里面就出现了大量重复的条目。类似这样的性能问题就像心头的一根刺,但是又懒得自己动手改代码。

在 17 年量子火狐之后,这俩插件都无法使用了,转而开始使用 SwitchyOmega,奈何功能有点缺失,用起来很不习惯。于是在17年的国庆长假,终于决定自己动手写个插件。七天假期没有回家没有出去玩,信誓旦旦想要在出租屋里完成代理插件的编写。不出意外地,直到10月7日最后一天,我还停留在 MDN Web Docs 页面,甚至连一个 hello world 都没有写完。

3. Now

就在前几日,看到 Chrome 插件要升级至 Chrome Manifest V3,没有升级的插件会逐渐被停用,这里面就包括 SwitchyOmega。在一些讨论中看到有人提到 SmartProxy,好奇搜索了一下,发现竟然就是曾经那个自己最想要的代理插件。兴奋地跑去跟群友分享,但是一时间竟然想不起来 SwitchyOmega 缺失的那个自己最想要的功能是啥。想来也是可悲,因为懒惰,总是将就,将就将就着,就忘了自己想要什么了。好在 SmartProxy 的配置项还挺细致,摸索了一番之后,想起来了 “那个功能”。下面把几个值得一说的功能列举一下。

3.1 Proxy Per Tab/Origin

file
简单介绍一下这个 “Proxy per tab/origin” 功能。如果你给一个域名加到了代理规则里之后,这个功能会让这个网页里面所有的资源都走代理。而 SwitchyOmega 一直没有这个功能,用户只能选择全部代理,放弃自动规则,才能将这个网页里面的资源全部代理。然后当你切换到其他标签页,不需要全部代理的时候,又得手动代理切回自动代理。

3.2 方便地添加自定义规则

此外,SmartProxy/AutoProxy 还能更方便的将特定域名加入代理白名单,点开插件的弹出窗口就能勾选复选框,而 SwitchyOmega 要将一个域名加入代理列表,需要进设置里面,手动输入域名再保存。

3.3 支持代理服务器排序

其他一些细节也很优秀,比如可以修改代理服务器的顺序,这个在 SwitchyOmega 里面是默认字母排序无法更改的,这些年我一直都是在代理名称前面加上 1, 2.... 这样的前缀来实现想要的顺序。

3.4 支持 Firefox for Android

Firefox 安卓版尽管已经可以使用扩展插,但是目前还只是白名单的方式,仅有部分插件可以在安卓平台使用。先进的 SmartProxy 已经支持了安卓,而老旧的 SwitchyOmega 没有。

4. Last words

激动之余,翻了翻 SmartProxy 的仓库: https://github.com/salarcode/SmartProxy, 作者说这个插件主要受到了 AutoProxy 启发,而第一条 commit 的时间也恰好在 2017 年。

哎,感慨于别人的行动力,望与诸君共勉。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


The reCAPTCHA verification period has expired. Please reload the page.

*