ZJUconnect + ClashVergeRev 配置教程(For Windows)
适用:浙江大学在校生,希望在家/校外同时做到「访问校内资源(CC98、图书馆数据库、教务网等)」和「科学上网」,两者互不干扰、自动分流。本文推荐配合Ai Agent共同食用。文末有AI版文件下载。
这套方案能干什么
配置完成后,你会得到一个"智能分流"网络环境:
| 你访问的东西 | 自动走哪条路 |
|---|---|
校内资源(CC98、图书馆、教务网、zju.edu.cn、校内内网 IP) |
走 zju-connect 隧道,进校内 |
| 外网(Google、GitHub 等需要翻墙的) | 走你的机场节点 |
| 国内普通网站(百度等) | 直连 |
三者自动识别、互不打架,不用手动切换。
原理
- zju-connect:浙大RVPN(现为aTrust协议)的开源客户端,负责把校外流量"隧道"回校内。
- Clash Verge Rev:代理分发器。校网流量→导给 zju-connect;外网流量→导给机场。
关键点:zju-connect 只当一个本地节点,Clash 当唯一入口,别让两个都抢"系统代理"。
准备条件
- 已激活的上网账号(注意不是统一身份认证)——在 https://myvpn.zju.edu.cn 激活并设密码;
- 下载 zju-connect(GUI 版
ZJU Connect for Windows或命令行版,github.com/mythologyli/zju-connect); - 安装 Clash Verge Rev(注意是 Rev 版,不是老版 Verge;内核 Mihomo);
- 一个机场订阅链接(可选,没有也行,外网就直连)。
第一步:配置 zju-connect
1. 创建配置文件 config.toml
关键内容如下(username 填学号,password 填上网账号密码):
username = "你的学号"
password = "你的上网账号密码" # 密码含 ! # 等特殊字符时,改用单引号包裹
protocol = "atrust" # 必须 atrust(新协议)
graph_code_file = "" # 留空 = 弹浏览器点选验证码(推荐);填路径 = 存图+手动 JSON(麻烦)
client_data_file = "clientData.json" # 首次登录后缓存凭证,之后免验证码
server_address = "vpn.zju.edu.cn"
server_port = 443
socks_bind = ":21080" # 记住这个端口,Clash 节点要用
2. 启动(Windows PowerShell)
cd <zju-connect 所在目录>
.\zju-connect.exe -config <config.toml 的路径>
3. 首次登录
- 会弹浏览器让你做点选验证码(用鼠标点图上的字即可);
- 接着输短信验证码(发到你绑定的手机);
- 成功后生成
clientData.json,以后启动免验证码(仅凭证过期、换设备/地点、文件被删时才重新验证)。
关键提醒
- 账号密码是上网账号(
myvpn.zju.edu.cn激活的),不是统一身份认证密码; - 浙大从 2025 年 5 月起,RVPN 已迁移到 aTrust(
vpn.zju.edu.cn),旧的rvpn.zju.edu.cn大量端口被关,老教程容易失效; - 若验证码卡在
Please enter the graph check code JSON,把graph_code_file改成空串重启,弹浏览器点选,比手动算坐标简单得多。
第二步:Clash Verge Rev 分流配置
老版 Clash Verge 已停维护、删掉了 prepend 功能,务必用 Clash Verge Rev。
1. 装「全局扩展脚本」
位置:Clash Verge Rev → 订阅页底部 → 「全局扩展脚本」卡片 → 点 Script。
清空默认模板,整段粘贴:
function main(config, profileName) {
for (const key in config) {
const ind = key.indexOf('-');
if (ind !== -1) {
const action = key.substring(0, ind);
const target = key.substring(ind + 1);
const currentValue = config[key];
if (action === 'prepend') {
config[target] = [...currentValue, ...(config[target] || [])];
delete config[key];
}
}
}
return config;
}
作用:把
prepend-*这种键"翻译"成真正的配置。不装它,下面的分流规则不会生效。
2. 写「全局扩展覆写配置」
位置:同订阅页底部 → 「全局扩展覆写配置」卡片 → 点 Merge。清空后粘贴:
prepend-proxies:
- name: "ZJU校内"
type: socks5
server: 127.0.0.1
port: 21080
prepend-proxy-groups:
- name: "校内服务"
type: select
proxies:
- ZJU校内
- DIRECT
prepend-rules:
- DOMAIN-SUFFIX,vpn.zju.edu.cn,DIRECT # 防套娃关键,必须放最前
- DOMAIN-SUFFIX,zju.edu.cn,校内服务
- DOMAIN-SUFFIX,cc98.org,校内服务
- IP-CIDR,10.0.0.0/8,校内服务
- IP-CIDR,210.32.0.0/16,校内服务
第一行
vpn.zju.edu.cn → DIRECT是防套娃的关键:让 zju-connect 自己连服务器时直连,不被 Clash 又导回自己,否则连不上。
3. 激活与选择
- 保存脚本 + 覆写配置后,在订阅页重新点击激活机场 profile(只"更新订阅"不够);
- 到「代理」页:「校内服务」选
ZJU校内,机场分组选一个节点; - 代理模式 = 规则,打开系统代理。
第三步:开机自启(守护进程)
zju-connect:用 Windows 任务计划程序
Win+R → 输入 taskschd.msc → 右侧「创建任务」(不是"创建基本任务"):
- 常规:名称
zju-connect,勾「只在用户登录时运行」+「使用最高权限运行」; - 触发器:新建 →「登录时」;
- 操作:新建 → 启动程序;程序填
zju-connect.exe的绝对路径,参数填-config <config.toml 绝对路径>(务必用绝对路径);「起始于(可选)」一定要填 zju-connect 目录——不填的话工作目录默认是 System32,config 里的相对路径clientData.json会找不到,任务报0x8007042B启动即退; - 条件:取消「只有在使用交流电时才启动此任务」;
- 设置:勾「如果任务失败按以下频率重新启动」(1 分钟 / 999 次)+「如果请求后任务仍在运行则强行停止」。
Clash Verge:内置开机自启
Clash Verge Rev → 设置 → 打开 「开机自启」 开关即可。
验证是否成功
- 校网:浏览器打开 https://www.cc98.org/,能加载即通;
- 外网:打开 https://www.google.com/,能打开即通;
- 命令行验证校网:
curl -x socks5://127.0.0.1:21080 -I http://cc98.org返回 301 即通。
日常使用
开机后:
- zju-connect 已由任务计划程序自动拉起(不用管);
- Clash Verge 已开机自启(不用管);
- 唯一手动的一步:打开 Clash → 主页点一下「系统代理」开关。
然后校网、外网、科学上网全自动就绪。
常见问题排查
| 问题 | 原因 / 解决 |
|---|---|
| 看不到「校内服务」分组 | 没装全局扩展脚本,prepend 键没被翻译 |
| 验证码反复要输 | 改用浏览器方案(graph_code_file 留空) |
| cc98 打不开 | ① zju-connect 进程还在跑吗;②「校内服务」分组选的是 ZJU校内 吗 |
| 端口对不上 | config 的 socks_bind 必须和 Clash 节点 port 一致 |
| 连不上/套娃 | vpn.zju.edu.cn → DIRECT 没加或没放最前 |
| 频繁被踢下线 | 上网账号并发=1,别处(手机 aTrust/EasyConnect)还挂着会互踢 |
附:完整 SKILL 原文件
以下是 AI 版 SKILL 原文件的完整内容(含头部元信息),可直接复制使用,也可以点击下方按钮直接下载。
文件内容(原样展示)
---
name: zju-connect-clash-setup
description: 浙江大学校外访问校内资源(CC98、图书馆数据库、教务网等)与科学上网共存的智能分流配置,基于 zju-connect(aTrust 协议)+ Clash Verge Rev。触发词:zju-connect、浙大校网、校内资源、CC98、Clash 分流、RVPN、aTrust、校外访问、校园网 VPN。
agent_created: true
---
# 浙大 zju-connect + Clash Verge 智能分流配置
## 目标
在校外同时实现「访问校内资源」+「科学上网」,两者互不干扰。核心:zju-connect 只当本地 SOCKS5 节点,Clash Verge 当唯一代理入口,用分流规则把校网流量导给 zju-connect、外网流量走机场。
## 原理速记
- zju-connect 是浙大 RVPN 的开源客户端,负责从校外穿透回校内(10.0.0.0/8 内网)。
- Clash Verge 负责系统代理 + 分流。校网域名/IP → zju-connect 节点;其余 → 机场/直连。
## 一、zju-connect 配置
### 下载
- GUI 版:`ZJU Connect for Windows`(内含 `zju-connect.exe` 引擎,可直接命令行调用)。
- 纯命令行:github.com/mythologyli/zju-connect 的 Release。
### config.toml 关键项
```toml
username = "学号"
password = "上网账号密码" # 含 ! # 等特殊字符时用单引号包裹
protocol = "atrust" # 必须 atrust(新协议)
graph_code_file = "" # 留空=弹浏览器点选验证码(推荐);填路径=存图+手动 JSON(麻烦)
client_data_file = "clientData.json" # 首次登录后缓存凭证,之后免验证码
server_address = "vpn.zju.edu.cn"
server_port = 443
socks_bind = ":21080" # 记住这个端口,Clash 节点要用
```
### 启动(Windows PowerShell)
```powershell
cd <zju-connect目录>
.\zju-connect.exe -config <config.toml路径>
```
### 关键点
- 账号密码 = **上网账号**(在 `myvpn.zju.edu.cn` 激活),不是统一身份认证密码、不是校园卡密码。
- 浙大自 2025-05 起 RVPN 已迁移到 aTrust(`vpn.zju.edu.cn`),旧 `rvpn.zju.edu.cn` 大量端口被关,旧教程易失效。
- 首次登录需:图形验证码 + 短信验证码;成功后生成 `clientData.json`,**日常启动免验证码**。仅当凭证过期、更换设备/登录地点、或 `clientData.json` 被删时才需重新验证。
- 验证码若卡在 `Please enter the graph check code JSON`,把 `graph_code_file` 改成空串,重启后弹浏览器点选,比手动算坐标粘 JSON 简单得多。
## 二、Clash Verge Rev 分流配置
> 原版 Clash Verge 已停维护、删了 prepend 功能;务必用 **Clash Verge Rev**(Mihomo 内核)。
### 1. 全局扩展脚本(翻译 prepend-* 键,必须装)
位置:订阅页底部「全局扩展脚本」卡片 → Script。整段替换默认模板:
```javascript
function main(config, profileName) {
for (const key in config) {
const ind = key.indexOf('-');
if (ind !== -1) {
const action = key.substring(0, ind);
const target = key.substring(ind + 1);
const currentValue = config[key];
if (action === 'prepend') {
config[target] = [...currentValue, ...(config[target] || [])];
delete config[key];
}
}
}
return config;
}
```
### 2. 全局扩展覆写配置
位置:订阅页底部「全局扩展覆写配置」卡片 → Merge。清空后粘贴:
```yaml
prepend-proxies:
- name: "ZJU校内"
type: socks5
server: 127.0.0.1
port: 21080
prepend-proxy-groups:
- name: "校内服务"
type: select
proxies:
- ZJU校内
- DIRECT
prepend-rules:
- DOMAIN-SUFFIX,vpn.zju.edu.cn,DIRECT # 防套娃关键,必须放最前
- DOMAIN-SUFFIX,zju.edu.cn,校内服务
- DOMAIN-SUFFIX,cc98.org,校内服务
- IP-CIDR,10.0.0.0/8,校内服务
- IP-CIDR,210.32.0.0/16,校内服务
```
### 3. 激活与选择
1. 保存脚本 + 覆写配置后,在订阅页**重新点击激活机场 profile**(仅"更新订阅"不够)。
2. 代理页:「校内服务」选 `ZJU校内`,机场分组选一个节点。
3. 代理模式 = **规则**,开启系统代理。
## 三、常见坑
1. **看不到「校内服务」分组**:没装全局扩展脚本,prepend 键没被翻译成真正配置。
2. **验证码反复要输**:改用浏览器方案(`graph_code_file` 留空)。
3. **端口对不上**:config 的 `socks_bind` 端口必须和 Clash 节点 `port` 一致。
4. **套娃/连不上**:必须加 `vpn.zju.edu.cn → DIRECT` 且放最前,否则 TUN 下 zju-connect 连服务器的流量被 Clash 又导回自己。
5. **同账号只能 1 台设备在线**:别处(手机 aTrust/EasyConnect)还挂着会互踢。
## 四、Windows 守护进程(开机自启 + 崩溃重启)
macOS 用 LaunchAgent;Windows 用「任务计划程序」做等价方案:
1. `Win+R` → 输入 `taskschd.msc` → 右侧「创建任务」(不是创建基本任务)。
2. 常规:名称 `zju-connect`;选「只在用户登录时运行」+「使用最高权限运行」。
3. 触发器:新建 →「登录时」。
4. 操作:新建 → 启动程序;程序填 `zju-connect.exe` 绝对路径,参数填 `-config <config.toml 绝对路径>`(务必用绝对路径);**「起始于(可选)」务必填 zju-connect 目录**——不填则工作目录默认 System32,config 里相对路径的 `clientData.json` 找不到,任务报 `0x8007042B` 启动即退。
5. 条件:取消「只有在使用交流电时才启动此任务」(笔记本电池时也要跑)。
6. 设置:勾选「如果任务失败按以下频率重新启动」(1 分钟 / 999 次,等价 macOS 的 KeepAlive)+「如果请求后任务仍在运行则强行停止」。
7. 验证:右键任务→运行,确认 cc98 可访问后,**关闭手动开的前台窗口**(否则两个进程抢端口,且同一上网账号并发=1 会互踢)。
## 验证
- 校网:`curl -x socks5://127.0.0.1:21080 -I http://cc98.org` 返回 301 即通。
- 浏览器访问 cc98.org(走校内)+ google.com(走机场)都正常即完成。