首次编辑:24/12/03/16:14
最后编辑:24/12/04/17:03
在Windows上有带图形界面的clash for windows,但是clash Linux端的好像没有带图形化界面的,只有命令行。我一开始回避了这个问题,只在windows上用clash,但是最近因为想给博客升级,有时候上github都上不去,Linux端科学上网的需求还是无法回避,所以就学习了一下如何在Linux上使用命令行版本的clash。
Ubuntu20.04 x86-64
下载
现在网上可以找到很多clash的下载1,clash也有很多版本,我使用的是clash-verge2,下载地址为https://github.com/zzzgydi/clash-verge/releases。
clash的版本问题
clash好像有很多个版本,好像clash的作者在23年底被请去喝茶了,github仓库也被删了,不过好像有个不愿意透露姓名的小黑子3说他接过了维护clash的重任,但我看了一下,23年底更新了一两次之后就没有继续更新了。
现存的版本我看到有叫clash的,有叫clash-verge的(就是我用的版本),小黑子的版本叫clash-rev,知乎上有人说有个叫Mihomo4的……
而clash for windows对应的是哪个我也不太清楚,或者只是为这些个版本中的某个编写了用户界面。
我下的是clash-verge_1.3.8_amd64.deb
,因为AppImage
运行起来好像会缺东西,而.deb
可以借助apt来同时下载缺的东西。
安装
sudo apt install path/to/clash-verge_1.3.8_amd64.deb
测试安装是否成功
$ clash -v
Clash 2023.08.17 linux amd64 with go1.21.0 Thu Aug 17 15:07:25 UTC 2023
一般配置文件(config.yaml
)会放在~/.config/clash/
路径下。
通过订阅链接获得配置文件
在命令行输入:
$ cd ~/.config/clash/
$ wget -O config.yaml <订阅链接>
将<订阅链接>
替换为实际的订阅链接。
直接复制配置文件内容
也可以在clash for windows中,复制配置文件的内容,然后在~/.config/clash/
路径下,新建一个config.yaml
,然后将复制的内容粘贴上来。
在正式使用之前,还需要设置一下网络代理。
回到桌面,右键依次点击“设置”、“网络”、“网络代理最右边的按钮”、“手动”,然后在下面的选项中填入
项目名称 | 第一栏 | 第二栏 |
---|---|---|
HTTP代理 | 127.0.0.1 | 7890 |
HTTPS代理 | 127.0.0.1 | 7890 |
Socks主机 | 127.0.0.1 | 7891 |
忽略主机 | localhost, 127.0.0.0/8, ::1 |
这样做有个问题,就是在关闭clash之后,再访问网址,会出现“代理服务器拒绝连接”。
我尝试过使用命令行来设置网络代理(即
export http_proxy=http://127.0.0.1:7890
),这样子当命令行窗口关闭之后,网络代理就又失效了,不过问题是,这样子设置,好像网络代理只在当前命令行窗口生效,在浏览器的眼里仍然是没有代理的。所以解决办法应该只能是一直开着clash了,如果想像clash for windows一样有个关闭代理的方法,可以直接把节点切换为
DIRECT
(如何切换节点参考下文)。
在命令行下输入:
$ clash
就可以启动了,正常情况下启动后将输出运行日志。
clash开启之后会监听9090端口,这时候在浏览器网址框中输入本地ip127.0.0.1:9090
能够看到clash返回了一个json数据hello: "clash"
。
我使用的clash-verge是没有ui界面的,不过我看很多教程中910,在浏览器输入的不是本地ip,而是
http://clash.razord.top/#/proxies
,然后返回的是一个类似clash for windows的ui界面。感觉应该是个不同的clash版本。
参考clash api,要切换节点需要向127.0.0.1:9090
发送POST请求,可以在命令行下使用curl来实现:
curl -X PUT -H "Content-Type: application/json" -d '{"name":"<节点名>"}' http://127.0.0.1:9090/proxies/<代理组名>
这里的<节点名>
和<代理组名>
要参考自己的配置文件(config.yaml
),一般在配置文件中会有如下的内容:
proxy-groups:
- name: <代理组名>
type: select
proxies:
- <节点名1>
- <节点名2>
- DIRECT
但是节点的切换并不会立即生效,而是需要关闭clash,重新启动,或者再发送下面的一个请求:
curl "http://127.0.0.1:9090/configs" -X PUT -d '{"path": "", "payload": ""}'
github,zzzgydi,clash-verge ↩
知乎,Arkcia,《Clash / Mihomo 装配指南 (Ubuntu)》 ↩
Kronos,使用Clash-API切换节点 ↩
Clash.Rev——不愿透露姓名的小黑子维护的新Clash项目,Clash.Rev Docs ↩
大哥云教程合集,《Ubuntu 使用 Clash For Linux 客户端教程》 ↩
作者:码鸽
链接:https://code-pigeon.github.io/blog/html/clash在linux上的使用.html
版权声明:博客所有原创内容(包括但不限于文章、图像等)除特别声明外,均采用CC BY-NC-SA 4.0国际许可协议。任何人均可自由传播,但禁止用于商业用途且必须署名并以相同方式分享。