原理讲解2026年10月9日阅读约 7 分钟

Clash Verge 和 SwitchyOmega 怎么选:浏览器扩展,还是系统级分流?

Clash Verge 和 SwitchyOmega 有什么区别?什么时候一个浏览器扩展就够用,什么时候机器人和命令行工具需要系统级的分流客户端,以及哪些地方要自己检查。

只有浏览器需要走代理的话,SwitchyOmega 就够了。它仍在维护的分支 SwitchyOmega 3 能把你列出的网站交给代理,在工具栏上一点就能切换,浏览器之外什么都不用装。如果还有别的东西要用代理,比如机器人、脚本、命令行工具或者桌面程序,你就需要一个工作在浏览器下层的工具,Clash Verge Rev 就是其中之一。两者都不提供代理:用的都是你已经买好的 HTTP 或 SOCKS5 代理,它们只负责决定哪些流量走它。

本文只比较这一件事:用你自己的代理,由规则决定哪些流量走它。Clash Verge 这一侧,我们把它的内核 Mihomo 1.19.32 接到一个需要登录的本地测试代理上实际跑过,下文的日志都来自这些测试。SwitchyOmega 这一侧的内容来自我们的 SwitchyOmega 指南。

一张表看区别

SwitchyOmega 3 Clash Verge Rev
是什么 Chrome、Edge 和 Firefox 的浏览器扩展 Windows、macOS 和 Linux 上的桌面程序,内核是 Mihomo
能管哪些流量 它所在浏览器的请求 使用系统代理或指向它本地端口的程序;虚拟网卡(TUN)模式下是整台电脑
规则按什么匹配 主机和网址规则 域名、域名后缀、关键词、IP 段、端口、进程名等
代理登录信息存在哪 存在扩展里,每个主机加端口只有一套 存在每个节点里,多个节点可以共用同一个主机和端口
带登录的 SOCKS5 Chrome 和 Edge 里不行 可以,对它经手的所有流量都行
需要安装什么 浏览器之外什么都不装 一个桌面程序;TUN 模式还需要服务或管理员权限,以及一条防火墙放行规则
自带代理吗 不带 不带

什么时候扩展就够了

  • 只有浏览器需要走代理。 几个要登录的网站、一个后台、在几个标签页里查资料。电脑上的其他东西都不用动。
  • 按网站分流就够用。 自动切换模式让你列出的主机走代理,其余的直连;不想用了,在工具栏上一点就关。
  • 不能或不想装桌面程序,比如在公司电脑或者几个人共用的电脑上。

它的限制就是我们 SwitchyOmega 指南里写的那些。Chrome 和 Edge 根本无法发送 SOCKS5 的用户名和密码,所以要么用 HTTP,要么把 IP 加入白名单后用不带登录的 SOCKS5。即使扩展里存着密码,Chrome 有时还是会弹窗来要。浏览器的代理设置同一时间只能由一个扩展控制。另外,替你回应代理登录的扩展能看到你浏览的一切,所以装之前值得花五分钟读一读代理浏览器扩展安全吗?。

什么时候需要系统级的分流客户端

  • 浏览器以外的东西需要走代理。 机器人、爬虫、curl、没有代理设置的桌面程序,它们都看不到浏览器扩展。
  • 几个程序要遵循同一套规则。 不管连接是哪个程序发起的,只要到了 Clash Verge,就按同一套规则处理。
  • 要用带登录的 SOCKS5。 程序连 Clash Verge 的本地端口不需要登录,由节点去登录你的代理,SOCKS5 和 HTTP 一样方便。
  • 同一个端口要用不同的登录信息。 每个节点各存一套用户名和密码。住宅代理的会话方式附在密码里,所以一个“粘性 IP”节点和一个“随机 IP”节点可以共用一个端口,再由规则决定哪些网站用哪个。每个主机加端口只存一套登录信息的扩展,两者只能留一个。
  • 要按程序分流。 PROCESS-NAME 匹配发起连接的程序。

我们在 Linux 上用下面两条规则试了一下:

rules:
  - PROCESS-NAME,curl,PROXY
  - MATCH,DIRECT

然后用 curl 和一个 Python 脚本各发了一个请求:

127.0.0.1:36486(curl, uid=1000) --> api.ipify.org:443 match ProcessName(curl) using PROXY[pool-http]
127.0.0.1:36500(python3.12, uid=1000) --> api.ipify.org:443 match Match using DIRECT

规则里的名字必须和程序的名字完全一致。那个脚本是以 python3.12 运行的,所以写 python 的规则抓不到它;Clash Verge 自己的文档里,Windows 程序名都带 .exe。查找进程依赖操作系统提供的能力,所以别以为在一个系统上好用的规则,换个系统也一样好用。“连接”页有一列“进程”,能看到内核实际识别出的是哪个程序。这种查找也会失手:我们连续发起 80 次 curl 连接,有 12 次没查到进程,落到了 MATCH,DIRECT。所以进程规则只当作方便的补充,目标站点最好再加一条域名规则。

程序怎么连到 Clash Verge,和规则同样重要。打开“系统代理”后,读取系统设置的程序会跟着走,但系统代理只是一种约定,不是强制。很多命令行工具根本不理它,它也承载不了 UDP。这类程序要你自己指向 Clash Verge 设置里显示的混合代理端口:

curl -x 127.0.0.1:MIXED_PORT https://api.ipify.org

另一个入口是虚拟网卡(TUN)模式:它创建一张虚拟网卡,不管程序配不配合,TCP 和 UDP 都接过来。TUN 模式需要在系统防火墙里放行内核,并以服务模式或管理员身份运行 Clash Verge。

系统级要付出的代价

要装的东西更多,能出错的地方也更多。扩展出了错,影响只限于一个浏览器;Clash Verge 出了错,可能把你早忘了的程序送进代理,也可能把本该走代理的那个漏在外面。规则最后一条写 MATCH,DIRECT,没列出的流量就一律直连;每次改完都看一眼“连接”页,它会列出每条连接命中的规则和所用的节点。想知道真正走了代理的那部分流量在用量表上有多少,自己数字节讲了怎么测。

信任问题和扩展一样。Clash Verge Rev 以 GPL-3.0 开源,只在 GitHub 上发布,并声明不收集任何用户数据。但它照样能看到你交给它的每一条连接,所以请从项目自己的发布页安装,并保持更新。

自己查一查:IP 规则可能把域名挤出代理

Clash 的规则既能按域名匹配,也能按 IP 段匹配,一个不显眼的错误就藏在这里。连接带着域名进来,内核走到 IP-CIDR 规则时,为了判断这一条,会先在本地把域名解析成地址,除非这条规则末尾写了 no-resolve。地址落在网段里,这条规则就命中了,下面那条域名规则根本轮不到。

我们是这样测的:一条 IP-CIDR 规则,网段里正好包含 api.ipify.org 的部分地址,放在一条本该让它走代理的域名规则上面:

rules:
  - IP-CIDR,104.26.0.0/16,DIRECT
  - DOMAIN,api.ipify.org,PROXY
  - MATCH,DIRECT

同一份配置跑了十次,有七次连接直连了,测试代理的日志里完全没有它们:

127.0.0.1:58434 --> api.ipify.org:443 match IPCIDR(104.26.0.0/16) using DIRECT

另外三次走了代理,因为那几次解析出来的是这个域名在网段之外的地址。时灵时不灵的规则,最难被发现。在 IP-CIDR 那一行末尾加上 ,no-resolve 之后,内核对带着域名进来的连接直接跳过这一条,六次全部命中了域名规则:

127.0.0.1:58442 --> api.ipify.org:443 match Domain(api.ipify.org) using PROXY[pool-http]

还有一个区别。带着域名到达节点的连接,由代理去解析:我们测试代理的日志里记的是 api.ipify.org:443,而不是 IP 地址。被没加 no-resolve 的 IP 规则拦下检查过的连接,在代理介入之前,就已经由内核在你这一侧解析过了。

两个习惯就能避开这两个问题:域名规则放在 IP 规则上面;用于直连地址(比如家里局域网)的 IP 规则加上 no-resolve。然后别光信,要去查:打开“连接”页或 Clash Verge 的“日志”页,看每条连接到底命中了哪条规则。

快速问答

Clash Verge 自带代理吗? 不带。它是一个客户端,只负责转发你交给它的代理。我们的代理在里面作为 HTTP 或 SOCKS5 节点使用。

SwitchyOmega 能管我的机器人或脚本吗? 不能。它只看得到所在浏览器发出的请求。要么在脚本自己的代码里设置代理,就像我们各篇接入指南那样;要么让它经过 Clash Verge。

哪个更安全? 两者都能看到经过自己的全部流量,也都是开源的。都从项目公布的链接安装,并保持更新。

ProxyPanda 在其中的位置

我们的代理支持 HTTP 和 SOCKS5:住宅代理的端口两种都接受,ISP 和数据中心代理在控制台里切换协议。在 SwitchyOmega 里,用带登录的 HTTP,或者把 IP 加入白名单后用 SOCKS5,SwitchyOmega 指南两种都讲了。在 Clash Verge 里,两种协议都能带登录使用,Clash Verge 指南讲了怎么把代理添加为节点、怎么写规则。拿不准你的工具该用哪种协议,可以看 HTTP 代理和 SOCKS5 的区别。

还有后续问题?

去 Discord 问。答案还能帮到下一个读到这个帖子的人。

加入 Discorddiscord.gg/proxypanda
$5 起步去 Discord 问