Clash for Windows 代理工具 配置文件预处理

admin2个月前 (07-05)clash138

Clash for Windows 代理工具 配置文件预处理

版本要求

0.10.1 版本更新后,支持使用 JavaScript 对下载后的配置文件进行预处理

0.11.10 版本更新后,支持使用 YAML 对下载后配置文件进行简单预处理

#简便方法(YAML)

如果需要对下载地址为https://example.com/profile.yaml的配置文件进行预处理,操作如下:

  1. 进入 Settings 界面

  2. 滚动至 Profiles 栏

  3. 点击 Parsers 右边 Edit 打开编辑器,填入:

    parsers:
      - url: https://example.com/profile.yaml    yaml:
          prepend-rules:
            - DOMAIN,test.com,DIRECT # rules最前面增加一个规则
          append-proxies:
            - name: test # proxies最后面增加一个服务
              type: http          server: 123.123.123.123          port: 456
  4. 点击编辑器右下角保存按钮

当配置文件触发刷新(包括自动更新)时,CFW 会读取yaml字段定义的值,将对应值插入/合并到原配置文件中

#参数说明

值类型操作
append-rules数组数组合并至原配置rules数组
prepend-rules数组数组合并至原配置rules数组
append-proxies数组数组合并至原配置proxies数组
prepend-proxies数组数组合并至原配置proxies数组
append-proxy-groups数组数组合并至原配置proxy-groups数组
prepend-proxy-groups数组数组合并至原配置proxy-groups数组
mix-proxy-providers对象对象合并至原配置proxy-providers
mix-rule-providers对象对象合并至原配置rule-providers
mix-object对象对象合并至原配置最外层中
commands数组在上面操作完成后执行简单命令操作配置文件

#Commands 使用方法(beta)

commands 是一组简单的命令,作为上面操作的补充

例子:

commands:
  - dns.enable=false # 命令1
  - proxy-groups.0.proxies.2+DIRECT # 命令2

每个命令可以被分为三个部分,分别是:定位+操作+设定值

命令 1 中,定位是dns.enable,操作是=,设定值是false

命令 2 中,定位是proxy-groups.0.proxies.2,操作是+,设定值是DIRECT

#定位

定位中每个层级以.分割,数组类型的定位下标由 0 开始计算,命令 2 中proxy-groups.0即表示定位至第 1 个策略组,.proxies表示访问第一个策略组的 proxies 属性,.proxies.2表示 proxies 属性的第 3 个位置

如果不想用序号定位,也可以使用name值定位,proxies以及proxy-groups中的每个项目都会有name属性。例如在proxies中已经定义了名为debug的节点,那么修改其udp参数的定位即为proxies.(debug).udp,名称两边的()是保证识别,如果节点名不包括+.=这几个符号,也可以省略不写

#操作

目前支持三种操作:

  • =:覆盖

  • +:插入

  • -:删除

命令 1 中,=表示将dnsenable的值覆盖为false

命令 2 中,+表示在定位的策略组中的proxies数组中添加一个名为DIRECT的值,原本其他值被向后移动 1 位。如果此处改成=,则会覆盖原来第一个值

#设定值

设定值是用于插入或覆盖的值,如果操作是-,则此值可有可无,例如:

commands:
  - proxies.0- # 命令3

此处可以将配置文件proxies的第 1 个节点删除

如果设定值为纯数字,则会被识别为整数,为true|false则识别为布尔类型,如果 JSON 编码通过则识别为对象

v0.13.7 版本更新后,支持 3 个内置值用于设置策略组节点,分别是[]proxyNames[]groupNames[]shuffledProxyNames,并支持使用正则过滤其中节点,例子如下:

yaml:
  prepend-proxy-groups:
    - name: myGroup # 建立新策略组
      type: fallback      url: "http://www.gstatic.com/generate_204"
      interval: 300
      proxies:
        - DIRECT  commands:
    - proxy-groups.myGroup.proxies=[]proxyNames|HK # 向策略组添加所有定义的节点名,并按“HK”正则表达式过滤

#进阶方法(JavaScript)

如果需要对下载地址为https://example.com/profile.yaml的配置文件进行预处理,操作如下:

  1. 进入 Settings 界面

  2. 滚动至 Profiles 栏

  3. 点击 Parsers 右边 Edit 打开编辑器,填入:

    parsers:
      - url: https://example.com/profile.yaml    code: |
          module.exports.parse = async (raw, { axios, yaml, notify, console }, { name, url, interval, selected }) => {
            const obj = yaml.parse(raw)
            return yaml.stringify(obj)
          }
  4. 点击编辑器右下角保存按钮

当配置文件触发刷新(包括自动更新)时,CFW 会调用此方法对下载的配置文件内容进行处理,再写入本地文件中

当然,parsers 也支持使用路径引入代码:

parsers:
  - url: https://example.com/profile.yaml    file: "C:/Users/cfw/parser.js"

TIP

使用文件时,允许调用该文件目录下的 node_modules 模块

版本 0.20.10 开始支持从远端获取

parsers:
  - url: https://example.com/profile.yaml    remote:
      url: https://gist.githubusercontent.com/Fndroid/40e6117252f794aa629b875aa1ecadea/raw/d1ba6d230746c9d2ecfbef211c52fd9a567a781e/parser.js      cache: true # 默认为false,指示是否对重复下载此预处理代码使用缓存

注意

使用远端配置请选择可信的代码提供者,如不能信任代码提供者,可以从远端拷贝代码然后使用code填入而非使用remote方式引入!

#参数说明

CFW 调用用户定义的parse方法时,会传入 3 个参数,分别是配置文件文本内容工具类对象/方法以及配置文件元数据

#配置文件文本内容

raw 是一个字符串,一般需要用 yaml 库解析成 JavaScript 对象

#工具类对象/方法

包括:

  • axios:网络请求框架,GitHub(opens new window)

  • yaml:yaml 框架,GitHub(opens new window)

  • notify:发出系统通知方法,签名为function notify(title:string, message:string, silent:bool)

  • console:日志输出至文件,方便调试,在 Settings 界面中 Parser 设置下方打开

  • homeDir:Home Directory 目录

TIP

除了以上工具类,在使用.js文件时,也可以通过npm引入第三方模块

#配置文件元数据

元数据为 JavaScript 对象,包括:

  • name:名称

  • url:下载地址

  • interval:更新周期

  • selected:策略组选择缓存,数组

  • mode:模式缓存

TIP

元数据在配置文件首次下载时只有 url 参数

#返回说明

parse方法需要返回一个字符串,CFW 会将返回的字符串存入对应的配置文件中

#多处理器及正则匹配

#正则匹配

上面例子中,使用url匹配配置文件地址,如果一个处理器需要处理多个配置文件,也可以使用正则表达式进行匹配,使用关键字reg设置

parsers:
  - reg: ^https://test\.com/.+$ # 正则匹配域名
    yaml:
      prepend-rules:
        - DOMAIN,test.com,DIRECT

#多处理器

parser 定义的数组支持多个处理器从上至下按顺序执行,例如:

parsers:
  - reg: https://test.com.+$ # 第一个执行的parser
    file: "C:/Users/cfw/parser.yaml"
  - url: https://example.com/profile.yaml # 对上一个parser执行的结果进行处理
    file: "C:/Users/cfw/parser.js"

TIP

file 同时支持 yaml 及 js 格式的文件

#使用案例

#向本地配置文件添加订阅信息

  1. 准备一个本地配置文件的副本,记下文件名和路径。为方便后续说明,以下用myprofile.yml指代此文件名,用C:\...\myprofile.yml指代此文件路径。

NOTICE

配置完成后,此副本文件将作为 CFW 配置文件的订阅源使用,对配置文件的非临时性修改需要在此副本文件中进行编辑,并在修改后执行订阅更新。移动、重命名此文件后需要修改 CFW 中相应的配置选项。

TIP

此处使用 CFW 创建的配置文件本身而非副本作为订阅源虽然可以实现相同的功能,但无法保证运行时的可靠性,如果没有特殊情况不建议这样使用。

  1. 准备一个包含订阅信息subscription-userinfo (opens new window)的订阅链接。为方便后续说明,以下用https://example.com/subscription_url指代此订阅链接。

TIP

可使用curl -I 'https://example.com/subscription_url'检查订阅链接是否包含订阅信息。

  1. 修改 CFW 中的配置文件选项,在URL中填写副本文件的本地映射地址file:///C:\...\myprofile.yml。保存后执行订阅更新并确保没有报错。

  2. 添加对应的预处理脚本,并确保正常匹配到配置文件。

parsers: # array
  - reg: "myprofile.yml"
    code: |
      module.exports.parse = async (raw, { axios, yaml, notify, console }) => {
        raw = raw.replace(/# upload=\d*; download=\d*; total=\d*; expire=\d*;*\n/gm,'')
        const url = 'https://example.com/subscription_url'
        let { headers:{"subscription-userinfo": si = ""}={}, status } = await axios.head(url)
        si = si.replace(/;*$/g,'')
        if (status === 200 && si) {
          return `# ${si};\n${raw}`
        }
        return raw
      }
  1. 执行订阅更新,配置文件模块中出现订阅信息即说明配置成功。

TIP

配置完成后可自行设置自动更新选项。

小火箭作为一款优秀的网络代理工具,具备多协议支持、自定义规则等强大功能,为用户提供了更灵活、安全的上网体验。通过本文的详细介绍,相信用户对小火箭的功能和使用方法有了更全面的了解。在使用过程中,用户应当根据个人需求合理配置代理设置,确保网络连接的稳定和安全。未来,随着技术的不断发展,相信小火箭将会迎来更多的更新和改进,为用户提供更出色的上网体验。更多相关资讯教程,请关注小火箭id平台

分享给朋友:

相关文章

最新ClashX Pro客户端官网下载及使用教程

最新ClashX Pro客户端官网下载及使用教程

ClashX Pro是专为 macOS 平台设计的Clash代理软件。它为用户提供了便捷的代理服务,能够安全、私密地浏览互联网。ClashX Pro支持多种代理协议,包括Shadowsocks(SS)...

2024最新教程在Android系统使用 Clash教程配置

2024最新教程在Android系统使用 Clash教程配置

在 Android 下使用 Clash在 Android 系统中推荐使用 Clash For Android。Clash 是一个基于 Go 语言开发的跨平台代理程序。 Clash for Androi...

订阅Clash节点显示全部超时/失败/timeout

订阅Clash节点显示全部超时/失败/timeout

如果发现所有的订阅节点全部都超时 timeout,那么极有可能是本地设备的时间同步出现了问题,可以尝试将本地设备的时间和互联网时间进行同步。Windows 下同步互联网时间:在任务栏搜索框输入控制面板...

2024最新iOS系统  Clash  客户端下载官网地址

2024最新iOS系统 Clash 客户端下载官网地址

Clash iOS 客户端下载地址,官网下载,避免进入山寨网站。目前网上已经出现了自称为 Clash for Windows 官网、Clash for Android 官网、ClashX 官网、Cla...

稳定好用的 Clash、小火箭(Shadowrocket) 机场推荐

稳定好用的 Clash、小火箭(Shadowrocket) 机场推荐

2024 稳定好用的翻墙机场推荐,适用于 Clash、Shadowrocket、V2rayN、Surge、Stash、sing-box 等多个平台的多种流行翻墙软件,导入即用。翻墙机场并非VPN,但比...

翻墙软件客户端:小火箭Shadowrocket、Quantumult X、Clash不同对比

翻墙软件客户端:小火箭Shadowrocket、Quantumult X、Clash不同对比

iOS 系统翻墙的特殊性苹果公司早在2017年就下载了中国区应用商店中的VPN应用。包含我们使用翻墙机场需要使用的 Shadowrocket、Quantumult X、Stash、Loon、sing-...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。