Clash for Windows:从入门到摆烂

最近俺滴V2RayN不知道出了什么问题,经常断流,去GitHub的issue里扒拉了半天,找到不少断流的问题,可惜并没有解决方案,索性换成了Clash,不过Clash的配置比V2RayN要麻烦不少,最近事情又有点多,搞到后面直接摆烂了,能用就行,于是就有了这篇从入门到摆烂的记录

Clash for Windows 下载

Clash是一个由Go语言开发的多平台代理客户端,支持VMess, Shadowsocks, Trojan等协议。而Clash for Windows就是Clash的一个图形客户端,虽然名字叫for Windows,它在Win、macOS和Linux上都能用🐶。更多信息请参阅Clash for Windows文档。下载链接如下,Win系统下载Clash.for.Windows.Setup.x.xx.xx.exe

汉化

安装完打开,你会发现语言默认是英文,而且设置里不能更换语言,好在有大佬做了汉化补丁,链接如下

注意下载的汉化补丁版本要和Clash for Windows版本对应。先退出Clash,然后将解压得到的app.asar文件复制到Clash目录并替换原有文件,默认路径为C:\Users\[你的用户名]\AppData\Local\Programs\Clash for Windows\resources

汉化.png

配置

在Clash中打开配置界面,可以看到已经存在一个名为config.yaml的基础配置文件,这是Clash的启动文件,一般不要改动这个文件,如果此文件有错,则 Clash 核心将无法启动。所以我们需要导入新的用户配置文件,这些文件可以不完整,通常只需要有:proxies/proxy-groups/rules三个字段组成即可。导入用户配置文件有两种方法:URL下载与本地文件导入。

参考:配置文件

配置文件.png

URL下载

如果你的机场支持Clash的话就很简单了,把Clash链接粘贴到文本框然后点击下载就OK了。但是Just My Socks并没有Clash的订阅链接,强行下载的话只会得到一个没有卵用的getsub.php。想用订阅链接的话需要转换一下。

订阅链接转换.png

上面是我找到的一个在线转换工具,不过我担心隐私问题就没有用它,而是用了下面的本地文件导入,手动敲进去🐶

更:刚刚在GitHub新发现了一个转换工具,有兴趣的朋友可以尝试一下

本地文件导入

这里我用Just My Socks为例,谷歌到了一个配置文件的模板,来源是v2xtls,下面两个链接都可以下载,第二个是我放在Google Drive里面的备份

打开Just My Socks的Service Configuration,然后在配置模板文件中找到proxies:,根据Just My Socks服务器的配置修改

  • proxies中的6个节点与Just My Socks的一一对应
  • 修改server、port、password、uuid等信息
  • name不要改
  • V2Ray的cipher建议设置为auto

JSM 配置信息.png
本地文件配置.png

修改完成后保存并回到Clash,将模板导入或者直接拖拽到Clash的配置里,然后双击启用导入的配置。

下载的配置模板放在哪里都可以,导入之后也可以删掉。因为导入之后Clash会在C:\Users\[你的用户名]\.config\clash\profiles文件夹中生成对应的配置文件,命名格式为时间戳

关于YAML文件

关于YAML文件

YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML 的配置文件后缀为.yml或者.yaml

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • ‘#’表示注释

引用:YAML 入门教程

规则设置

打开代理页面,可以看到有全局、规则、直连以及脚本四种模式,一般使用规则,相当于常用的PAC模式。代理页面主要的作用就是切换代理模式和切换节点。

如果你使用的是上面的模板配置文件,那么在规则界面应该可以看到出现了很多规则,都是上面导入的模板文件中包含的,可以直接使用。

  • PROXY中选择要使用的节点
  • Final控制的是规则中未被收录的网址的连接模式,如果服务器流量和速度尚可的话,建议选择PROXY代理模式,避免一些网站打不开。为了节省流量的话就设置为DIRECT直连模式。

模板规则.png

规则组成

规则组成

一个代理规则主要由三部分组成:

  • 应用对象,包括完整域名(DOMAIN)、域名后缀(DOMAIN-SUFFIX)、域名关键字(DOMAIN-KEYWORD)、IP地址/段(IP-CIDR)以及GEOIP;
  • 作用的IP或者域名;
  • 采取的规则,包括直连(DIRECT)、屏蔽(REJECT),走某个代理组(上一步定义的PROXY、Apple等代理组)

引用:深入理解Clash配置文件

规则类型

规则类型

目前 Clash 支持的规则类型如下:

  • DOMAIN-SUFFIX:域名后缀匹配
  • DOMAIN:域名匹配
  • DOMAIN-KEYWORD:域名关键字匹配
  • IP-CIDR:IP 段匹配
  • SRC-IP-CIDR:源 IP 段匹配
  • GEOIP:GEOIP 数据库(国家代码)匹配
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROCESS-NAME:源进程名匹配
  • RULE-SET:Rule Provider 规则匹配
  • MATCH:全匹配

另外模板文件最后的cfw-bypass控制的是需要绕过的IP和域名设置

引用:规则编辑

策略组

策略组

策略组在这里指的是配置文件中的proxy-groups,策略组的作用,就是根据不同策略分发规则传递过来的请求。

策略组有如下特性:

  • 可以包含节点或其他策略组
  • 具有多种不同的策略类型
  • 服务于规则

所有策略组都是服务规则的,如果规则里没有直接或间接使用这个策略组,则策略组就是多余的。

Clash内置了2个策略组,分别是DIRECT直连和REJECT拒绝

  • DIRECT: 顾名思义,不进行代理,直接连接,适用于国内网站和未被墙的网站
  • REJECT: 阻止请求进行,适用于屏蔽恶意网站等

另外在模板文件中,我们还创建了自动选择快速节点PROXY等策略组,可以在代理界面设置对应的策略。

策略组类型包括selecturl-testfallbackrelay以及load-balance,对应配置文件中的type

  • select 手动选择,在节点列表手动选择节点或策略组
  • url-test 延迟测试,选择延迟低的节点
  • fallback 可用性测试,按照节点顺序选择第一个可用节点
  • load-balance 负载均衡,对同一 eTLD+1 的请求将使用相同的代理
  • relay 转发中继,发送到此代理组的请求将依次通过指定的代理服务器进行中继。目前没有 UDP 对此的支持。指定的代理服务器不应包含其他中继。

参考:关于策略组的理解

更多规则集

上面模板里的规则可以满足日常使用需求,但是缺点是不方便更新,好在GitHub上有大佬做了每天6:30更新的规则集,传送门如下

README里面提供的rule-providers和rules添加到配置文件中即可,如果在上面的配置文件中直接修改的话建议删除原有的rules,注意保留PROXY策略组

配置文件不完整示例

下面是配置文件策略组与规则部分的示例

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# 代理组策略
# 策略组示例请查阅 Clash 项目 README 以使用最新格式:https://github.com/Dreamacro/clash/blob/master/README.md
proxy-groups:

# url-test 通过指定的 URL 测试并选择延迟最低的节点
- name: "自动选择快速节点"
type: url-test
proxies:
- "jms-s1"
- "jms-s2"
- "jms-s3"
- "jms-s4"
- "jms-s5"
- "jms-s801"
url: 'http://www.gstatic.com/generate_204'
interval: 300

# 代理节点选择
- name: "PROXY"
type: select
proxies:
- "自动选择快速节点"
- "jms-s1"
- "jms-s2"
- "jms-s3"
- "jms-s4"
- "jms-s5"
- "jms-s801"

# 代理规则文件地址
rule-providers:
reject:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400

icloud:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/icloud.txt"
path: ./ruleset/icloud.yaml
interval: 86400

apple:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400

google:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/google.txt"
path: ./ruleset/google.yaml
interval: 86400

proxy:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400

direct:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400

private:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/private.txt"
path: ./ruleset/private.yaml
interval: 86400

gfw:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/gfw.txt"
path: ./ruleset/gfw.yaml
interval: 86400

greatfire:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/greatfire.txt"
path: ./ruleset/greatfire.yaml
interval: 86400

tld-not-cn:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/tld-not-cn.txt"
path: ./ruleset/tld-not-cn.yaml
interval: 86400

telegramcidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/telegramcidr.txt"
path: ./ruleset/telegramcidr.yaml
interval: 86400

cncidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400

lancidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/lancidr.txt"
path: ./ruleset/lancidr.yaml
interval: 86400

applications:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/applications.txt"
path: ./ruleset/applications.yaml
interval: 86400

# 规则
rules:
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,DIRECT
- RULE-SET,proxy,PROXY
- RULE-SET,direct,DIRECT
- RULE-SET,lancidr,DIRECT
- RULE-SET,cncidr,DIRECT
- RULE-SET,telegramcidr,PROXY
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY

# Clash for Windows
cfw-bypass:
- qq.com
- music.163.com
- '*.music.126.net'
- localhost
- 127.*
- 10.*
- 172.16.*
- 172.17.*
- 172.18.*
- 172.19.*
- 172.20.*
- 172.21.*
- 172.22.*
- 172.23.*
- 172.24.*
- 172.25.*
- 172.26.*
- 172.27.*
- 172.28.*
- 172.29.*
- 172.30.*
- 172.31.*
- 192.168.*
- <local>
cfw-latency-timeout: 5000

启用这个配置后Clash的侧边栏会多出一个服务商,在这个页面就可以轻松的更新规则集了
服务商.png

Link Start!

配置完成后回到常规界面,开启系统代理就可以愉快的上网了~
系统代理.png

UWP

巨硬出于安全考虑,在UWP应用中使用了沙盒机制,默认情况下无法访问回环地址(localhost),导致应用商店等UWP应用无法走代理,需要用EnableLoopback程序进行修改。此程序已经内置在Clash for Windows 中,通过常规页面的UWP应用网络回环-启动助手打开,然后勾选需要解除限制的应用,并点击右上方的Save Changes保存。

应用回环助手.png
解除回环限制.png