关于在使用 Clash 过程中遇到的问题

Posted by benjamingao on March 2, 2019

前言

本人太笨,在使用 clash for windowsclashX 遇到了一系列问题,现在记录下来以便供自己和遇到相同问题的人以参考。

此篇文章针对的是 ss,不是 V2,但是当你理解 ss 也就知道 V2 该如何配置了。建议看完全文再实际操作。

本文针对人群

没有使用过 surge 的小白。

文中所使用的版本及系统

windows 系统

OS: Windows10
clash for windows: v 0.5.27

macOS 系统

OS: macOS 10.13.0
clashX: 1.9.6

特别提醒

时过境迁,本文不保证您随着我的教程而不出现某些问题。


软件下载和安装

下载

windows 系统

  • https://github.com/yichengchen/clashX

GPG 效验,如何效验略(不会

macOS 系统

  • https://github.com/Fndroid/clash_for_windows_pkg

安装

windows 系统

v 0.5.27 版本(或更早的版本)增加了安装位置选项,选择 仅为我安装,会把软件安装到 用户文件夹 下;选择 为使用这台电脑的任何人…,会安装到 C:\Program Files\Clash for Windows

区别

选择 为使用这台电脑的任何人…,在切换用户的时候依然可以使用该软件。

macOS 系统

此处略,安装没什么好说的。

配置

配置文件位置

macOS

  • ~/.config/clash/config.yml

windows

  • C:\Users\你的用户名\.config\clash,如果找不到就是进 C 盘,点击 用户,点击文件夹是 你用户名 的文件夹,进去之后点击 .config 文件夹,再点 clash 文件夹,就看到 config.yml 文件了

编辑配置文件的软件

macOS

随意,自带的也行,或者下载 vscode,地址:https://code.visualstudio.com/download

windows

建议 vscode,地址:https://code.visualstudio.com/download

编辑配置文件

Tips

注意标点符号,必须是英文状态下的。

这两个软件的配置文件是 通用 的,建议先复制 config.yml 一份配置文件,然后打开复制后的文件。

删除 ProxyProxy Group 里面所有的内容,然后在 proxy 下粘贴一下内容:

- name: "ss2" 
  type: ss
  server: server
  port: 443
  cipher: AEAD_CHACHA20_POLY1305
  password: "password"
  plugin: obfs
  plugin-opts:
  mode: tls # or http
    # host: bing.com
  • name 就是名称,比如说你这个服务器是香港的,那么你就写香港
  • cipher 就是加密方式
  • mode 此处需要注意你自己是 tls 还是 http
  • host 一般机场都有自己的指向的

# 号代表注释掉,也就是不让 # 号后面的内容起作用

Proxy Group 粘贴一下内容:

- { name: "PROXY", type: select, proxies: ["ss2"] }
  • name 这里起名很重要,不建议更改,使用 proxy 即可,因为它会跟分流规则相关联,后面会有说明。
  • proxies 这里填写服务器的 name,因为我在上面写了 ss2,所有我在这里也必须是 ss2,它们两个必须完全一样。
  • type 这里不动,它的意思就是选择,选择后面的服务器,我们现在就一个服务器,如果多了不就有选择性了。

现在就可以使用了。

  • windows
    • 打开软件,点击左侧 Profiles,把你编辑的配置文件拖放的右侧,然后点击你拖放到里面的配置文件,使其变为浅红色。如果你的配置文件有问题,屏幕右下角会弹出报错信息,配置文件无问题则会提示 success。
    • 点击左侧 General,右侧 System Proxy 的右边打钩。
    • 点击左侧 Proxies,右侧选择 ss2,此时登陆谷歌,应该能打开。
  • macOS
    • 点最上面一栏的软件图标,出站模式选择全局
    • 点设置为系统代理,使其变为打钩状态。
    • 点配置,点切换配置文件,点你修改的那个文件。如果配置没问题,则会提示 success,打开谷歌进行测试,如果有问题则会报错。

如果上面顺利进行一下步骤;如果弹出报错信息,请根据报错提示再仔细核查。因为我们现在只有一个服务器,不够用,所有我们要再增加一个。

Proxy:
- name: "ss2" 
  type: ss
  server: server
  port: 443
  cipher: AEAD_CHACHA20_POLY1305
  password: "password"
  plugin: obfs
  plugin-opts:
  mode: tls # or http
    # host: bing.com
- name: "ss1" 
  type: ss
  server: server
  port: 443
  cipher: AEAD_CHACHA20_POLY1305
  password: "password"
  plugin: obfs
  plugin-opts:
  mode: tls # or http
    # host: bing.com

Proxy Group:
- { name: "PROXY", type: select, proxies: ["ss2", "ss1"] }

增加完了,前后对比一下,很快就能发现怎么增加的,所以我就不再废话了。增加完毕之后再进行第三步的测试,看有没有报错,没报错看能不能登陆谷歌。

面进行规则简单说明,GitHub 有很多规则,谷歌搜索一下即可。这里只是简单讲解一下规则的使用。

Proxy Group:
- { name: "PROXY", type: select, proxies: ["ShadowsocksX-NG"] }
- { name: "Hijacking", type: select, proxies: ["DIRECT", "REJECT"] }
Rule:
- DOMAIN-SUFFIX,bilibili.com,Hijacking

我们先看 Rule 里的参数,一般规则由三部分组成,分别是:

  • 判断类型规则
  • 该类型所对应的域名
  • 该域名所对应的代理规则

我们以 www.bilibili.com 这个网址举例:

假设我们想在登陆 bilibili 这个网站的时候通过代理方式。那么我们可以这么写一条规则:

- DOMAIN-SUFFIX,bilibili.com,PROXY

因为 bilibili.com 是一个域名,要如何判断一个域名用什么规则呢?这个用作 判断 的东西,就是我上面提到的 判断类型规则。这里判断域名的东西就是 DOMAIN-SUFFIX。我现在已经通过它来判断出这是一个域名了,那么我改如何让 bilibili.com 走代理?只要在其后加上 PROXY 就行。这个 PROXY 就是对应上面 Proxy Group 里的 PROXYproxies 这里只有一个代理服务器,所以默认就是它,如何有多个,那么你要自己在软件里选择,不是在这个文件里。

如何切换:
  • macOS

  • windows(看好红色箭头) Test Latency 测延迟的意思

Proxy Group 里 name 所对应的字符会在软件里体现。

继续 bilibili.com,假设 bilibili.com,bilibili1.com 等等凡是域名包含 bilibili 的我都想代理,那么就写:

DOMAIN-KEYWORD,bilibili,PROXY

DOMAIN-KEYWORD 表示判断域名中的关键字,而 bilibili 就是关键字,所以凡是有这个关键字的域名全都被匹配到,也就全都代理了。

DOMAIN,www.bilibili.com,PROXY

这里表示只有打开 www.bilibili.com 的时候是通过代理的,如果打开 live.bilibili.com 就不被代理了,虽然都是 bilibili.com。只有一个 DOMAIN 的时候表示的是匹配完整域名。

我们看 Proxy Group 里面还有一个 Hijacking,而它的 proxies 里则是 DIRECTREJECTREJECT 是拒绝的意思,DIRECT 是直连的意思。假设 baidu.com 是一个广告网站,我们现在想拦截他,拒绝他的请求,就可以这么写:

DOMAIN-SUFFIX,baidu.com,Hijacking

他的意思就是当我们打开 baidu.com 的时候,我们可以选择在 clash 里选择是拒绝还是直连,拒绝就是拒绝它了。不管是 www.baidu.com 还是 m.baidu.com 通通拒绝。

  • macOS

  • windows

可以看到这里有选择,是直连还是拒绝,通常该类型的规则用于广告。关于规则就说到这里,以后再说吧,也可以找找其他 surge 规则教程,他们是类似的。

对于网上找的整理好的规则,如何用?一般情况下只要增加或减少规则里面的 Proxy 的服务器,再修改Proxy Group 里面的服务器名字就可以了。


结尾

一个废话连篇的小教程到这里就结束了,平时用规则就可以,不必全局。

  • macOS

  • windows

surge 规则自定义参考

Surge -定制自己的规则配置