跳到主要内容

在 Clash 中添加全局规则

· 阅读需 3 分钟
1adybug
子虚伊人

有时候我们希望某些网站不走代理,这时候就需要添加自定义规则,右击订阅,选择扩展脚本:

// Define main function (script entry)

/**
* @param {object} config
* @param {string[]} config.rules
* @param {string} profileName
*/
function main(config, profileName) {
config.rules.unshift("DOMAIN-SUFFIX,axshare.com,DIRECT")
config.rules.unshift("DOMAIN-SUFFIX,bing.com,DIRECT")
config.rules.unshift("DOMAIN-SUFFIX,codesandbox.io,DIRECT")
config.rules.unshift("DOMAIN-SUFFIX,csbops.io,DIRECT")
config.rules.unshift("DOMAIN-SUFFIX,csb.app,DIRECT")
config.rules.unshift("DOMAIN-SUFFIX,gallerycdn.vsassets.io,节点选择")
config.rules.unshift("DOMAIN-SUFFIX,gallery.vsassets.io,节点选择")
config.rules.unshift("DOMAIN-SUFFIX,marketplace.visualstudio.com,节点选择")
return config
}

DOMAIN 是指定域名,DOMAIN-SUFFIX 是指定域名后缀,DIRECT节点选择 都是规则内的分组。

规则类型匹配逻辑匹配目标性能等级关键注意事项
DOMAIN精确域名匹配域名仅匹配完全相同的域名字符串。
DOMAIN-SUFFIX域名后缀匹配域名匹配指定后缀及其所有子域名。
DOMAIN-KEYWORD域名关键词匹配域名匹配域名中任何位置出现的关键词,可能产生误匹配。
IP-CIDR目标 IPv4 地址段目标 IPv4默认触发 DNS 解析。
IP-CIDR6目标 IPv6 地址段目标 IPv6默认触发 DNS 解析。
GEOIP目标 IP 地理位置目标 IP基于 MaxMind 数据库;默认触发 DNS 解析。
SRC-IP-CIDR源 IPv4 地址段源 IPv4主要用于网关模式,区分局域网内不同设备。
DST-PORT目标端口目标端口基于 TCP/UDP 目标端口进行匹配。
SRC-PORT源端口源端口基于 TCP/UDP 源端口进行匹配。
PROCESS-NAME进程名称进程名操作系统相关;适用于 Windows, macOS, Linux, FreeBSD。
PROCESS-PATH进程路径进程路径操作系统相关;比进程名更精确,但可移植性差。
IPSETLinux IP 集目标 IP低 (内核)仅 Linux 可用;需要 ipset 工具;性能极高。

有时候我们希望某些规则对于所有的订阅都生效,这时候我们可以右击 全局扩展脚本,选择编辑文件:

// Define main function (script entry)

/**
* @param {object} config
* @param {string[]} config.rules
* @param {string} profileName
*/
function main(config, profileName) {
/** @type string | undefined */
const name = config["proxy-groups"]?.at(0)?.name
config.rules.unshift(`DOMAIN-SUFFIX,neo4j.com,${name}`)
return config
}

这里的意思找到订阅的第一个分组(一般都是通用的代理规则),然后将这条规则添加到这个分组中。

如果需要对于脚本进行调试,可以添加 console.log,在保存脚本以后,会在 全局扩展脚本 下方出现一个日志按钮,点击以后会输出脚本的日志。