Skip to content
This repository has been archived by the owner on Apr 16, 2020. It is now read-only.

如何配置Specht Lite

zhuhaow edited this page Sep 14, 2016 · 3 revisions

本配置说明不保证一定是最新版本,我会尽量更新,但一切都以Readme中的为准

中国用户可以参考这里的(并不由我维护的)模版

如果发现完全看不懂下面配置文件的格式的,先学习一下Yaml的基本格式,只需要掌握数组和字典即可。

下面是一个简单的配置文件:

# 这是本地监听的HTTP代理的端口地址。
# SpechtLite还会自动启用一个位于port+1的SOCKS5代理服务器。
# 选择大于1024的未被占用的端口即可。
port: 9090
# 下面定义adapter,即远程代理服务器的信息。每个adapter代表一个远程代理服务器。
adapter:
     # 在定义规则的时候,我们使用id来引用当前定义的adapter。
     # 程序自动定义了一个id为direct的adapter,使用这个adapter将会不走代理直接连接目标服务器。因此自定义id不能为direct。
  - id: adapter1
     # 类型为HTTP代理服务器.
    type: HTTP
    host: http.proxy
    port: 3128
    auth: true
    username: proxy_username
    password: proxy_password
  - id: adapter2
     # 类型为HTTP代理,但是使用SSL进行加密。
    type: SHTTP
    host: http.proxy.connect.via.https
    port: 3128
    auth: true
    username: proxy_username
    password: proxy_password
  - id: adapter3
    # 类型为shadowsocks服务器。
    type: ss
    host: http.proxy.connect.via.https
    port: 3128
    # 当前支持的加密方法有: AES-128-CFB, AES-192-CFB, AES-256-CFB, chacha20, salsa20, rc4-md5
    method: AES-128-CFB
    password: ss_password
  - id: speed
    # 针对每个请求,Speed adapter 自动连接至所有的代理服务器(包括direct),并自动选择连接最快的服务器。参考[TcpRoute2](https://github.com/GameXG/TcpRoute2)
    type: SPEED
    adapters:
      - id: adapter1
        # 设置延迟,单位为毫秒。
        delay: 300
      - id: adapter2
        delay: 300
      - id: adapter3
        delay: 300
      - id: direct
        delay: 0
  # 不发起任何连接,而是在给定延迟后断开
  - id: reject
    type: reject
    # 延迟非常重要,某些app可能会在连接失败后立刻无限重连。
    delay: 300
# 接下来定义规则,每一个连接请求都会按顺序一一进行匹配。
rule:
  # 基于给定的list文件中的正则表达式匹配域名信息(不包括IP)。
  - type: list
    file: ~/.SpechtLite/adlist
    adapter: reject
  # 基于目标服务器的国家信息
  - type: country
    # ISO 国家代码
    country: CN
    # 这条规则是否匹配到符合这个国家的IP信息。
    match: true
    # 我们要使用的adapter的id。
    adapter: direct
  - type: country
    # 当无法找到对应IP的地理位置信息时会返回“--”,这通常意味着这是一个内网IP。
    country: --
    match: true
    adapter: direct
  # 基于给定的list文件中的IP地址匹配DNS解析得到的IP地址。
  - type: iplist
    adapter: direct
    file: ~/.SpechtLite/directiprange
  # 当DNS解析失败时匹配。
  - type: DNSFail
    adapter: speed
  # 匹配所有的请求。
  - type: all
    adapter: speed

list规则中的file是一组正则表达式,例如:

\.cn
zhihu\.com

每一个表达式都由 NSRegularExpression(pattern: pattern, options: .CaseInsensitive)进行初始化,然后通过firstMatchInString(host, options: [], range: NSRange(location: 0, length: host.utf16.count))进行匹配。

iplist中的file包含了一组IP地址信息,每一行可以由标准的CIDR格式给出127.0.0.0/8也可以由更加自由的格式127.0.0.0+16777216给出。

Clone this wiki locally