使用Clash工具科学上网

1. Clash基本介绍

1.1 Clash简介

  • Clash是一款用Go开发的多平台的代理工具,Clash使用强大的策略组来管理节点。
  • Clash的魅力在于可以自动选择节点,不同的网站,在同一时间,可以使用不同的节点去访问,推荐机场订阅用户使用。

1.2 Clash支持

  • 系统支持:目前支持Win、Mac、Android、软路由端,暂不支持iOS端。
  • 协议支持:支持当下主流的SS/SSR、v2ray、Trojan等协议。

1.3 Clash安装

1.3.1 Clash原版

1.3.2 Clash汉化版

功能界面说明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
General(常规):
- Port、Socks Port;分别为HTTP、SOCKS代理端口,点击终端图案可以打开一个配置了代理的命令行窗口,点击端口数字可以复制该命令;
- Allow LAN:启用局域网共享代理功能;
- Log Level:日志等级;
- Home Directory:点击下方路径直达 C:\Users\用户名\.config\clash 文件夹;
- GeoIP Database:点击下方日期可更新 GeoIP 数据库;
- UWP Loopback :可以用来使 UWP 应用解除回环代理限制;
- Tap Device :安装 cfw-tap 网卡,可用于处理不遵循系统代理的软件(实际启动 tap 模式需要更改配置文件);
- General YML:编辑 config.yml 文件,可用于配置部分 General 页面内容;
- Dark Theme:控制暗色模式;
- System Proxy:启用系统代理;
- Start with Windows:设置开机自启;
Proxies(代理):选择代理方式(Global - 全局、Rule - 规则、Direct - 直连)及策略组节点选择;
Profiles(配置管理):
- 用来下载远端配置文件和创建本地副本,且可在多个配置文件间切换;
- 对配置进行节点、策略组和规则的管理(添加节点、策略组和规则, 调整策略组顺序、节点顺序及策略组节点使用拖拽的方式);
Logs(日志):显示当前请求命中规则类型和策略;
Connections (连接): 显示当前的 TCP 连接,可对某个具体连接执行关闭操作;
Feedback(反馈):显示软件、作者相关信息,内含捐赠码,欢迎打赏 Fndroid 大佬以感谢和支持开发。

爱折腾的小伙伴可选择自行汉化,步骤如下:

  • Step1:安装Node.js,下载安装 Node.js(对应平台的.msi版本即可)【检查:npm -v】
  • Step2:安装asar,安装命令为npm install -g asar【检查:asar –version】
  • Step3:找到 Clash 的语言包文件 app.asar (在\resources文件夹下),备份该文件
  • Step4:切换目录,输入cd 安装路径\Clash.for.Windows\resources
  • Step5:解包,输入asar extract app.asar 安装路径\Clash.for.Windows\resources\bak,解包后在bak文件夹下
  • Step6:在\bak\dist\electron路径下找到 renderer.js 文件,用记事本打开全局替换,记得勾选上“区分大小写”
  • Step7:重新打包,输入 asar pack 安装路径\Clash.for.Windows\resources\bak app.asar
  • Step8:使用重新打包获得的app.asar替换原有的。

2. Clash订阅转换

由于手动编写Clash配置文件比较麻烦,以下我们将采用工具进行转换,此处不再赘述具体写法,有兴趣的小伙伴可以自己研究一下。

参见:Clash/ClashX规则,解读Clash/ClashX配置文件,Clash/ClashX使用教程 from 波仔

2.1 使用convert2clash工具在本地转换

我们可以使用一个开源工具将我们的机场订阅直接转换成Clash配置文件,使用方法如下:

  • Step1:下载开源转换工具–clashR、clash、ss、ssr、v2ray订阅转clash,文件在本地生成,无需上传至第三方服务 from Github

  • Step2:安装依赖–执行pip install -r requirements.txt

  • Step3:修改Robot.py中的参数 (正常情况下只需修改sub_url即可食用),并执行。

    1
    2
    3
    4
    1. sub_url=订阅地址(多个地址;隔开)
    2. output_path=转换成功后文件输出路径 默认输出至当前文件夹的output.yaml中
    3. config_url=来自互联网的规则策略 默认值为https://cdn.jsdelivr.net/gh/Celeter/[email protected]/config.yaml
    4. config_path=来自本地的规则策略 默认选择当前文件的config.yaml文件

2.2 搭建subconverter和sub-web在线转换

上述方法虽然足够好用,但还需要安装python环境,对于非开发者的小伙伴不够方便。

恰巧Github上还有个在各种订阅格式之间转换的开源项目Subconverter和Sub-Web,可以在线的对订阅进行转换,但用别人的后端转换订阅,存在一定的数据隐患,如果不放心的话,可以自行搭建。

Sub-Web作者的在线订阅转换:https://sub-web.netlify.app/

2.2.1 准备工作

环境准备:

  • 在VPS(本文使用的Debian10系统)上安装宝塔面板和Nginx环境
  • 解析两个域名(一个用于前端,一个用于后端)
  • 申请泛域名证书,用于开启HTTPS(非必须,但建议弄一个)

注:以上环境的搭建过程不再赘述,不会的小伙伴可参考我的另一篇博客:VPS基本部署环境的搭建与配置

项目准备:

2.2.2 搭建Sub-Web前端

[1] 更新系统并安装 Node 与 Yarn

依次运行下面四行命令,安装nodejs环境及npm、yarn包管理工具

1
2
3
4
$ apt update -y
$ apt install -y curl wget sudo nodejs git
$ sudo apt install npm
$ npm install -g yarn

命令执行完毕以后,请运行下面的代码查询 Node 与 Yarn 是否安装成功,若是成功会返回版本号

1
2
$ node -v
$ yarn -v

[2] 下载并安装 Sub-Web

拉取 sub-web 程序,并进入 sub-web 文件夹

1
2
$ git clone https://github.com/CareyWang/sub-web.git
$ cd sub-web

在项目目录中安装构建依赖项,构建的过程稍微有点长

1
$ yarn install

[3] 修改默认后端地址

打开 /root/sub-web/src/views/Subconverter.vue ,找到 258行 backendOptions:,替换后面的 http://127.0.0.1:25500/sub?https://后端域名/sub?(注意两个地方:域名为你刚才准备的后端域名,是 https 而非 http)

[4] 更换远程规则

打开 /root/sub-web/src/views/Subconverter.vue 文件,找到 259行 remoteConfig: [,插入下面内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{
label: "ACL4SSR",
options: [
{
label: "ACL4SSR_Online 默认版 分组比较全 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini"
},
{
label: "ACL4SSR_Online_AdblockPlus 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_NoAuto 无自动测速 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoAuto.ini"
},
{
label: "ACL4SSR_Online_NoReject 无广告拦截规则 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini"
},
{
label: "ACL4SSR_Online_Mini 精简版 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini.ini"
},
{
label: "ACL4SSR_Online_Mini_AdblockPlus.ini 精简版 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_Mini_NoAuto.ini 精简版 不带自动测速 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_NoAuto.ini"
},
{
label: "ACL4SSR_Online_Mini_Fallback.ini 精简版 带故障转移 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_Fallback.ini"
},
{
label: "ACL4SSR_Online_Mini_MultiMode.ini 精简版 自动测速、故障转移、负载均衡 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini"
},
{
label: "ACL4SSR_Online_Full 全分组 重度用户使用 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full.ini"
},
{
label: "ACL4SSR_Online_Full_NoAuto.ini 全分组 无自动测速 重度用户使用 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_NoAuto.ini"
},
{
label: "ACL4SSR_Online_Full_AdblockPlus 全分组 重度用户使用 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_Full_Netflix 全分组 重度用户使用 奈飞全量 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini"
},
{
label: "ACL4SSR 本地 默认版 分组比较全",
value: "config/ACL4SSR.ini"
},
{
label: "ACL4SSR_Mini 本地 精简版",
value: "config/ACL4SSR_Mini.ini"
},
{
label: "ACL4SSR_Mini_NoAuto.ini 本地 精简版+无自动测速",
value: "config/ACL4SSR_Mini_NoAuto.ini"
},
{
label: "ACL4SSR_Mini_Fallback.ini 本地 精简版+fallback",
value: "config/ACL4SSR_Mini_Fallback.ini"
},
{
label: "ACL4SSR_BackCN 本地 回国",
value: "config/ACL4SSR_BackCN.ini"
},
{
label: "ACL4SSR_NoApple 本地 无苹果分流",
value: "config/ACL4SSR_NoApple.ini"
},
{
label: "ACL4SSR_NoAuto 本地 无自动测速 ",
value: "config/ACL4SSR_NoAuto.ini"
},
{
label: "ACL4SSR_NoAuto_NoApple 本地 无自动测速&无苹果分流",
value: "config/ACL4SSR_NoAuto_NoApple.ini"
},
{
label: "ACL4SSR_NoMicrosoft 本地 无微软分流",
value: "config/ACL4SSR_NoMicrosoft.ini"
},
{
label: "ACL4SSR_WithGFW 本地 GFW列表",
value: "config/ACL4SSR_WithGFW.ini"
}
]
},

[5] 打包vue生成dist发布目录

我们的前端搭建完毕,现在需要打包生成一个发布目录,执行下面的命令进行打包:

1
$ yarn build

执行完打包命令后,在 /root/sub-web 下面会生成一个 dist 目录,这个目录即为网页的发布目录,如图所示:

2.2.3 在宝塔面板上设置网站

[1] 添加前端站点

  • Step1:网站——添加站点——输入前端域名(其余的都不需要配置)——提交——然后添加SSL证书并强制HTTPS。

  • Step2:文件——打开/root/sub-web/dist目录复制所有文件,将其粘贴到该网站的根目录

  • Step3:测试前端是否可以访问(https://前端域名),显示出如下页面即配置成功:

[2] 添加后端站点

  • Step1:网站——添加站点——输入后端域名(其余的都不需要配置)——提交——然后添加SSL证书并强制HTTPS
  • Step2:网站——设置——反向代理——添加反向代理——代理名称随便填,目标URL填写http://127.0.0.1:端口号(端口号后面要在后端程序里配的,默认端口25500)

这样,我们后端的反向代理就设置完成了

2.2.4 搭建SubConverter后端

[1] 下载并解压后端程序

输入以下命令:

1
2
3
$ cd /root
$ wget https://github.com/tindy2013/subconverter/releases/download/v0.6.3/subconverter_linux64.tar.gz
$ tar -zxvf subconverter_linux64.tar.gz

完成以后,在 /root 文件夹下会多出一个 subconverter 的文件夹,这个就是我们的后端程序

[2] 修改配置文件参数

打开/root/subconverter/pref.ini ,找到如下参数进行修改

1
2
3
4
api_access_token=token字符串             #随意设置自己知道就行(不用加引号)
managed_config_prefix=https://后端域名 #设置成我们刚刚解析的后端域名
listen=127.0.0.1 #设置监听地址127.0.0.1
port=25500 #设置运行端口号(默认25500)

[3] 创建服务进程并启动

接下来我们需要创建一个服务,让VPS每次重启或是开机自动运行后端程序

找到VPS目录 /etc/systemd/system,创建一个名为 sub.service 的文件,添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=A API For Subscription Convert
After=network.target

[Service]
Type=simple
ExecStart=/root/subconverter/subconverter
WorkingDirectory=/root/subconverter
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

检查运行状态以及设置开机自启

1
2
3
4
$ systemctl daemon-reload
$ systemctl start sub.service
$ systemctl enable sub.service
$ systemctl status sub.service

启动subconverter服务

1
2
$ cd /root/subconverter
$ ./subconverter

到这里,后端也就搭建完毕了,我们现在可以在浏览器里面访问我们的后端了 https://后端域名,正常情况下会显示后端程序的版本号。

1
subconverter v0.6.3 backend

3. Clash入门使用

3.1 导入Clash配置

有本地导入和远程下载两种方法导入Clash配置文件,分别对应上述的两种订阅转换方式。

3.1.1 本地导入

在”配置“处导入刚刚生成的output.yaml文件

3.1.2 远程下载

[1] 生成订阅链接

打开我们的sub-web前端站点,将机场订阅链接复制上,后端地址填写subconverter后端地址,选择一个远程配置(推荐如图所示的ACL4SSR_Online_Full全分组重度用户使用(与Github同步)配置),然后点击“生成订阅链接”按钮,复制生成的定制订阅。

[2] 远程下载订阅并应用配置

打开Clash for Windows,点击“配置”模块,在输入框粘贴刚刚生成的定制订阅,然后下载该配置,点击其应用配置。

注:如果出现配置界面空白,可删除%USERPROFILE%\.config\clash文件夹,清除Clash的配置文件。

3.2 打开系统代理

在“常规”处打开“系统代理”,然后在“连接”处就会显示出我们的节点了,正常情况下现在就可以翻墙了。

4. 参考资料

[1] Clash for Windows 教程 | 可能是Windows上最好用的代理工具 from Sabrina的万事屋

[2] 自己汉化Clash for Windows,支持Win/MacOS平台

[3] Clash for Windows 最新汉化补丁+MacOS+Android最新版下载地址

[4] 订阅和订阅转换那些事 from Deng’s Blog

[5] Clash/ClashX规则,解读Clash/ClashX配置文件,Clash/ClashX使用教程 from 波仔

[6] clashR、clash、ss、ssr、v2ray订阅转clash,文件在本地生成,无需上传至第三方服务 from Github

[7] Clash for Windows使用文档 from Clash官方

[8] Sub-Web搭建教程!自行搭建Clash订阅转换平台,自建Sub-Web前端和SubConverter后端!from 波仔

[9] 2020最强、最新、最全的Clash分流规则订阅平台自行搭建(关联本地Sub-Web前端/SubConverter后端)from YouTuBe

[10] 在各种订阅格式之间转换的实用程序Subconverter–后端 from Github

[11] 在各种订阅格式之间转换的实用程序Sub-Web–前端 from Github

[12] clash for Windows 的 profile 界面是空白,什么都不显示 from V2EX