Clash script脚本功能为高级用户提供了动态规则生成能力,本文详解script模式配置语法、内置函数用法及实际场景应用,助你实现基于时间、域名特征的自动化流量分流,提升国际网络加速效率。
Script模式与传统规则的区别
标准Clash配置依赖静态规则匹配,而script功能允许通过JavaScript语法编写动态逻辑,当跨境办公需求涉及多时段策略切换或复杂域名分组时,script模式能根据运行时环境自动调整代理组,避免手动修改配置文件的繁琐操作。
启用Script功能的三步配置
-
内核版本确认
确保使用Clash Meta(mihomo)内核,原生Clash内核不支持script字段,Windows用户推荐Clash Verge Rev客户端,macOS选择ClashX Meta分支。 -
配置文件结构调整
在YAML根节点添加script:字段,与proxies:、rules:并列,需同时启用profile:下的store-selected: true以保存脚本状态。 -
编写脚本逻辑
使用内置函数如resolveProcessName()获取进程名,now.getHours()获取时间,通过config.proxies和config['proxy-groups']操作配置对象。
代理组类型与适用场景
| 类型 | 工作机制 | 最佳场景 |
|---|---|---|
| Select | 手动切换 | 固定线路的学术资源访问 |
| URLTest | 自动测速选优 | 多节点负载均衡 |
| Fallback | 故障自动转移 | 跨境视频会议稳定性保障 |
Script可动态修改这些组的proxies列表,实现基于网络质量的实时调度。
TUN模式与系统代理的底层差异
系统代理仅接管HTTP/HTTPS流量,依赖应用主动识别代理设置,TUN模式通过虚拟网卡捕获所有IP层数据,支持UDP转发与游戏加速,Script配置中可通过config.tun.enable开关控制模式切换,建议跨境办公场景开启TUN以处理非HTTP协议。
分流规则优先级与语法
Script模式下规则匹配遵循:
DOMAIN > DOMAIN-SUFFIX > DOMAIN-KEYWORD > IP-CIDR > GEOIP > MATCH
常用写法示例:
script:
code: |
const domainRules = [
{ pattern: "google.com", proxy: "自动选择" },
{ pattern: "cn", proxy: "DIRECT" }
];
function main(config) {
const hour = new Date().getHours();
// 工作时间切换至办公专线
if (hour >= 9 && hour < 18) {
config['proxy-groups'][0].name = "办公节点";
}
return config;
}
常见问题排查
现象:脚本修改后配置未生效
原因:Clash缓存了旧配置或script字段缩进错误。
解决方法:清除~/.config/clash/cache目录,使用YAML在线校验工具检查缩进,确保code字段使用管道符保持多行文本格式。
现象:TUN模式开启后特定应用断连
原因:应用使用硬编码DNS或绕过系统路由表。
解决方法:在script中添加dns.enhanced-mode: redir-host,并配置fake-ip-filter排除该应用域名。
现象:URLTest自动切换过于频繁
原因:延迟测试间隔设置过短或阈值过低。
解决方法:调整interval至300秒以上,设置tolerance: 50避免毫秒级波动触发切换。
对于需要稳定国际网络加速的用户,建议选择支持Clash订阅格式的服务商,定期更新节点列表以应对线路波动,优质订阅通常提供自动化的规则集更新,与script功能配合可实现近乎零维护的代理环境。
掌握Clash script脚本功能使用教程中的动态配置技巧后,你可构建自适应的网络工具链,无论是处理跨境办公需求还是优化多媒体访问体验,script模式都提供了传统静态规则无法比拟的灵活性,建议从简单的时段切换脚本开始实践,逐步过渡到基于进程名的智能分流方案。
