使用Clash工具科学上网

  1. 1. Clash基本介绍
    1. 1.1 Clash简介
    2. 1.2 Clash支持
    3. 1.3 Clash安装
      1. 1.3.1 Clash原版
      2. 1.3.2 Clash汉化版
  2. 2. Clash订阅转换
    1. 2.1 使用convert2clash工具在本地转换
    2. 2.2 搭建subconverter和sub-web在线转换
      1. 2.2.1 准备工作
      2. 2.2.2 使用OneinStack搭建Nginx并进行配置
      3. 2.2.3 打包Sub-Web前端
      4. 2.2.4 搭建SubConverter后端
      5. 2.2.3 添加反向代理并开启 HTTPS
  3. 3. Clash入门使用
    1. 3.1 导入Clash配置
      1. 3.1.1 本地导入
      2. 3.1.2 远程下载
    2. 3.2 打开系统代理
  4. 4. 参考资料

1. Clash基本介绍

1.1 Clash简介

  • Clash是一款用Go开发的多平台的代理工具,Clash使用强大的策略组来管理节点。

  • Clash的魅力在于可以自动选择节点,不同的网站,在同一时间,可以使用不同的节点去访问,推荐机场订阅用户使用。

    如果你对科学上网还不了解,可以先看我的另一篇博客:使用SSR或Trojan-Go科学上网

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 准备工作

环境准备:

  • 以下我将采用Nginx部署的方式进行搭建,VPS系统用的是Debian 11 x86_64。VPS的购买及配置、域名解析(域名建议准备两个,前后端各一个域名)…这些基本的就不再赘述了,如果不会的话见我的另一篇博客:VPS基本部署环境的搭建与配置

项目准备:

2.2.2 使用OneinStack搭建Nginx并进行配置

[1] OneinStack简介

项目简介:OneinStack是一套部署开发环境的脚本工具,它的部署方式是纯原生部署,我主要使用里面的Nginx,用来辅助生成配置。

项目地址:https://github.com/oneinstack/oneinstack

[2] 使用OneinStack搭建Nginx服务

1
$ wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_optio

注:OneinStack采用编译安装的方式搭建Nginx服务,速度比较慢,请耐心等待,常用的默认目录有:

1
2
3
Nginx安装目录: /usr/local/nginx
Nginx配置目录:/usr/local/nginx/conf
网站数据目录:/data/wwwroot/域名

[3] 创建网站开启HTTPS

OneinStack 内置了 acme.sh,它会自动帮你申请 SSL 证书。

1
2
$ cd ./oneinstack
$ ./vhost.sh

配置过程的参考示例如下(示例域名为www.demo.com):

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
#######################################################################
# OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+ #
# For more information please visit https://oneinstack.com #
#######################################################################

What Are You Doing?
1. Use HTTP Only
2. Use your own SSL Certificate and Key
3. Use Let's Encrypt to Create SSL Certificate and Key
q. Exit
Please input the correct option: 2 【选择2】

Please input domain(example: www.example.com): www.demo.com 【输入域名】
domain=www.demo.com

Please input the directory for the domain:www.demo.com :
(Default directory: /data/wwwroot/www.demo.com): 【回车,使用默认配置】
Virtual Host Directory=/data/wwwroot/www.demo.com

Create Virtul Host directory......
set permissions of Virtual Host directory......

Do you want to add more domain name? [y/n]: n 【输入n,不添加其他域名了】

Do you want to redirect all HTTP requests to HTTPS? [y/n]: y 【输入y,强制HTTPS】

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [CN]: 【回车】

State or Province Name (full name) [Shanghai]: 【回车】

Locality Name (eg, city) [Shanghai]: 【回车】

Organization Name (eg, company) [Example Inc.]: 【回车】

Organizational Unit Name (eg, section) [IT Dept.]: 【回车】

Do you want to add hotlink protection? [y/n]: n 【输入n,不需要防盗链保护】

Allow Rewrite rule? [y/n]: y 【输入y,允许重写规则】

Please input the rewrite of programme :
wordpress,opencart,magento2,drupal,joomla,codeigniter,laravel
thinkphp,pathinfo,discuz,typecho,ecshop,nextcloud,zblog,whmcs rewrite was exist.
(Default rewrite: other): 【回车】
You choose rewrite=other

Allow Nginx/Tengine/OpenResty access_log? [y/n]: y 【输入y,允许日志记录】
You access log file=/data/wwwlogs/www.demo.com_nginx.log

#######################################################################
# OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+ #
# For more information please visit https://oneinstack.com #
#######################################################################
Your domain: www.demo.com
Virtualhost conf: /usr/local/nginx/conf/vhost/www.demo.com.conf
Directory of: /data/wwwroot/www.demo.com
Rewrite rule: /usr/local/nginx/conf/rewrite/other.conf
Self-signed SSL Certificate: /usr/local/nginx/conf/ssl/www.demo.com.crt
SSL Private Key: /usr/local/nginx/conf/ssl/www.demo.com.key
SSL CSR File: /usr/local/nginx/conf/ssl/www.demo.com.csr

配置完成后,修改一下配置文件

1
$ vim /usr/local/nginx/conf/vhost/www.demo.com.conf

server模块删除内容:

1
2
3
4
5
6
7
8
9
10
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

location /.well-known {
allow all;
}

server模块新增内容:

1
2
3
4
5
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
allow all;
root /data/wwwroot/www.demo.com/; # 把路径换一下
}

检查并重载Nginx配置

1
2
$ nginx -t
$ nginx -s reload

注:使用nginx -t 命令可以检查Nginx配置,若出现如下内容则说明配置正确。

1
2
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

之后把资源文件放置到 /data/wwwroot/www.demo.com 目录即可,打开Chrome浏览器即可访问(如果出现403则需要给这个目录添加一下权限)。

2.2.3 打包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.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
$ nohup ./subconverter

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

1
subconverter v0.6.3 backend

2.2.3 添加反向代理并开启 HTTPS

[1] 添加前端站点

  • Step1:通用的创建网站开启HTTPS见本文2.2.2节。

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

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

[2] 添加后端站点

通用的创建网站开启HTTPS并配置反向代理见本文2.2.2节。

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