关于 Clash 使用的一点记录

✍🏼 写于 2022年10月08日    💡 更新于 2023年01月05日
❗️ 注意:离本文创建时间已经过去了 天,请注意时效性
🖥  说明:Clash For Windows For Mac 简单使用场景。
📚  本文同步发布在 Craft:https://www.craft.do/s/LUmvgdChQqG364

⚠️ 本文涉及的节点、机场订阅服务,都是子虚乌有个人杜撰的,实际并不存在,此处只是一个 Demo 示例,请大家知晓。

前言

Clash 是一款好用的富强工具,它只是一个内核叫 Clash core,本质是一款命令行工具(谁又说任何软件本质不是命令行呢?),大神们据此开发了各式各样的 GUI 界面以方便设置和使用。我曾经使用过 Mac 上的 ClashX 和 Clash For Windows For Mac(你没有看错),也即通常所说的 CFW。因为方便开发的原因,它使用的是 Electron 的架构来实现的 GUI,所以它可以打包成 Mac 版和 Window 版本,非常好用。

我目前使用的是 Clash For Windows 这个。

Clash for Windows For Mac 界面

当然,国际惯例,本篇文章除了简单介绍常用设置的用处外,还简单介绍了下如何更新订阅链接和切换节点,防止某些人一有问题就来责怪我:「为什么 behance 又打不开了啊!」「为什么翻个墙这么麻烦啊!」「你花那么多钱买梯子怎么还这么难用啊!」的时候,我把这篇文章摔给她,然后继续打游戏。

⚠️ 名词解释:富强 = 翻q

一些设置的用处

这些说明基本都在它的使用说明里面,我这里结合自己的真实使用场景介绍一下。

GeoIP Database

它的功能是可以基于 IP 的地理位置来判断是否需要走代理,原理是维护了一个数据库到本地,然后查询即可。因为 IP 地址是不断更新的,所以这个数据库也是需要偶尔更新一次的(不频繁)。

GeoIP 数据库下载

TUN Mode

有些软件不遵循系统代理,如终端、iTerm、Infuse。TUN 模式就是为了解决这个问题的,它对于不遵循系统代理的软件,它可以接管其流量并交由 CFW 处理。

我个人的实际使用是为了看 Infuse 中的 Emby。因为我的 Emby 服务是需要机场特定节点的,然而 Infuse (似乎)内置了自己的请求工具,并未走系统代理,因此即使将 CFW 设置为系统代理,同时指定了正确的节点,却还是无法打开机场提供的 Emby 服务,此时只需要打开 TUN 模式即可解决。

还一个使用场景是,打开了 TUN 模式后,iTerm 终端的命令也会走代理流量了;如果没有打开 TUN 模式的话,git clone 等是不会走代理流量的,我之前的办法是是手动创建一个 alias 命令来指定终端代理,需要的时候按 ppp 回车,不需要的时候按 sss 回车(我的代理端口是 7890):

alias ppp="export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890"
alias sss="unset all_proxy;unset https_proxy;unset http_proxy"

启用 TUN 模式需要 Service Mode,具体方式可以见文档:

TUN 模式 | Clash for Windows "by Fndroid" https://docs.cfw.lbyczf.com/contents/tun.html#macos

不过我个人遇到的一个情况是,CFW 提示我 Service Mode 已经打开,但是那个小地球图标是红色的。于是我先关闭了一下 Service Mode,CFW 自动重启后显示 Service Mode 未激活,同时只有两个按钮可以点 install 和 uninstall,于是我就点那个 install,重启后还是红色的小地球图标,于是我先 uninstall 后再 install,CFW 自动重启后就变成绿色小地球了。说这一点是说,可能 GUI 有 bug,遇到问题最好多尝试几次不同的方式来解决。

💡 记得关闭软件的安全 DNS 功能,才能正常使用 TUN 模式。如果你发现 TUN 模式下软件不好使,可能跟该软件的这个功能原因。

Chrome 关闭安全 DNS

Parser

也即「配置文件预处理」。

有些时候你想在 CFW 的分流规则生效之前,设置自己的规则。比如大多数人用的都是机场订阅链接,机场的订阅链接都自带了自己的分流规则,类似全球直连、全球拦截、漏网之鱼这种:

机场的内置分流规则

而你想有自己自定义的规则,如某个特定链接走代理。如果你直接修改订阅链接下载的配置文件,那么下次订阅链接更新的时候,你的修改就会被覆盖。于是 Parser 应运而生。

简单来说,Parser 会在机场订阅规则应用前,首先应用你配置的规则,并将你的规则合并到最终生效的规则中。比如我经常访问的一个网站,它有两套域名,如果访客是大陆用户,则直接返回大陆内容;如果是海外 ip 访问该网站,该网站会跳转到海外地址上。

而尴尬的是,一旦开启了 TUN 模式,该网站就会判定你是海外用户,就无法以大陆用户的身份来访问该网站了(账号不互通)。于是我就可以使用 Parser 功能,将该网站的大陆版地址加入然后设置直连即可:

只支持针对特定节点列表配置文件进行预处理

但是,比较尴尬的是,它只针对某个特定的 yaml(也即下面说的订阅节点列表)生效,因此如果你有多个订阅节点列表(机场),那就需要写多个 url。

更新:好消息是 CFW 支持一个规则匹配多个订阅节点列表了,使用 reg 字段正则匹配即可,如下我使用的是匹配全部配置文件:

reg 匹配多个 yaml 配置文件

点击查看配置文件的Parser

点击订阅节点列表,查看该配置对应的 Parser。

该 Parser 能匹配上配置文件

注意:订阅转换服务可能使 Parser 失效。

注意:设置完 Parser 后需要点一下当前代理的更新按钮才会生效。

Diff

该功能作用给上面的 Parser 类似,但它会作用于 Parser 之后生效。原理是先手动生成一个文件(类似于 git 的 base 版本),该文件可以是你基于当前订阅配置文件修改后的文件。然后每当订阅配置文件更新的时候就会将新的与旧的 diff 一次,如果发现有问题就需要手动解决一次冲突。

该功能目的也是为了保证每次更新不会覆盖你对当前配置文件的修改。

Mixin

⚠️ 注意:此功能只适合注入「功能属性」,同时 mixin 中的规则会覆盖机场订阅列表中的其他规则!因此,你只应该在 mixin 中设置注入 dns 等的信息,而不应该设置 rules 等的信息,因为其会使机场订阅的节点无效。

Mixin 设置

还有一个设置入口在 Setting 里面,这里可以选择 JavaScript 格式的 Mixin 设置,具体可以参看文档:

Mixin 总设置

System Proxy

顾名思义,就是将 Clash 设置为系统代理。如果关闭的话,有些依赖系统代理的软件,就不能富强了,比如 Safari。因此如果你想让你的 Safari 富强,务必打开 System Proxy。

无法正常富强时排查方式

当访问需要富强的网站确发现无法富强的时候,可以按下面几点简单排查一下:

第一步:检查 Proxies

点击菜单栏中的小猫咪

小猫咪被点击啦

在打开的界面中点击 Proxies tab 栏,然后点击节点选择:

点击节点选择会展开节点

💡 自动选择:CFW 会自动选择可用节点

此时注意查看节点选择后面的文字是不是自动选择(默认应该是的,你不应该动这个地方),确保是自动选择,然后点击测速查看当前自动选择节点的速度:

测速结果在右侧

这里如果节点不可用的话,会显示是 Timeout 超时,如果延迟过高如 1000+ 会以红色数字显示,会表示富强的网速慢。

第二步:检查 Profiles

一般情况下,你的 Profiles 都应该有多个,诸如这样的:

在多个节点列表中切换

如果在第一步发现节点测速显示都是 Timeout ,那么可以考虑更换节点列表,上图中点击一个新的 block,如果其左侧变绿,就表示切换为当前 block 的节点列表了。然后此时再重新执行第一步检查节点的速度是否正常即可。

另外如果上图中的节点列表很久没更新(括号中显示更新时间),那么点击上面的 Update All 尝试更新。此时可能更新失败,可以换其他 block 点击后,再次点 Update All 尝试更新即可:

更新节点列表

注意,不要在多个节点列表之间切换过快,可能会导致错误,切换一个后,等个 3~4 秒再切换其他的(如果必要的话)。

第三步:断开全部链接

如果发现上面两步执行过后,都没问题,但是就是无法打开页面,那么可能是因为此时浏览器还保持着之前的连接未断开,故而没有重新通过代理监理链接。此时只需要在 CFW 的 Connections tab 中,点击断开全部链接,然后刷新你打不开的页面即可:

断开全部连接

添加新的机场订阅

新的机场订阅即上面说的「节点列表」。

Profiles tab 中,将你拿到的链接粘贴到当前唯一的输入框,然后点 Download 即可,如果下载成功会有提示:

添加新的节点列表

其他

富强模式

Clash 有不同的富强模式,如全局,即所有网络链接都富强;有 Rule,即按照你定的规则,不同的网络链接有的富强有的直连;有 Direct 表示全部网络链接都直接连接,效果等同于没有开 Clash 富强;有 Script,可以写一个 JavaScript脚本,让自定义脚本判断哪些链接走富强,哪些直连。这些配置可以在这里切换:

切换富强方式

代理局域网的其他设备

Clash 可以代理当前局域网同一网段的其他设备的网络链接,让无法富强的其他设备也能富强,最典型的用法就是代理 Apple TV 的。因为 Apple TV 系统没有开放相关代理接口,因此其不像手机一样可以直接安装富强软件进行富强,因此要么借助路由器富强,要么就是将其代理服务器设置为 Clash 所在的设备,然后在 Clash 中打开 Allow LAN 即可:

允许本地局域网连接

什么是机场订阅链接?

机场订阅链接就是机场给你一个链接,然后 Clash 会解析这个链接,该链接会让 Clash 下载一个 yaml 格式的配置文件,来指示 Clash 如何功能。

- EOF -
本文最先发布在: 关于 Clash 使用的一点记录 - Xheldon Blog