Shadowrocket 的按需连接(On-Demand)功能可以让代理根据网络环境或访问的域名自动开启或关闭,无需手动切换,实现"智能翻墙"。
核心原理
iOS 系统的 On-Demand VPN 机制允许应用设定触发条件:
- 域名触发:访问特定域名时自动连接代理
- 网络触发:连接特定 Wi-Fi 或蜂窝网络时自动启用/禁用
- 规则匹配:根据路由规则决定是否走代理
配置步骤
基础设置
设置 → 按需连接 → 开启开关
规则配置(关键)
在 Shadowrocket 的配置页面,编辑规则文件:
DOMAIN-SUFFIX,baidu.com,DIRECT
DOMAIN-SUFFIX,cn,DIRECT
FINAL,DIRECT # 默认直连,需要时自动连接
关键逻辑:将 FINAL 设为 DIRECT,这样只有匹配代理规则的流量才会触发 VPN 连接。
DNS 设置(防止泄漏)
设置 → DNS → 配置 DNS over HTTPS
# 推荐:8.8.8.8 或 1.1.1.1(避免 DNS 污染导致误判)
按需连接模式选择
- 自动:系统根据规则自动判断
- 始终开启:保持 VPN 常连(耗电)
- 按域名:仅访问代理列表域名时连接
高级用法
场景 1:国内网站直连,海外网站自动代理
[Rule] DOMAIN-KEYWORD,google,PROXY DOMAIN-KEYWORD,youtube,PROXY DOMAIN-KEYWORD,github,PROXY GEOIP,CN,DIRECT FINAL,DIRECT
场景 2:特定 Wi-Fi 下禁用代理
设置 → 按需连接 → Wi-Fi 例外 → 添加家庭/公司 Wi-Fi SSID
场景 3:蜂窝网络自动开启
设置 → 按需连接 → 蜂窝数据 → 始终开启
常见问题解决
| 问题 | 解决方案 |
|---|---|
| 频繁弹窗 VPN 请求 | 检查规则是否有循环(如 DNS 查询走代理导致递归) |
| 国内网站变慢 | 确保 GEOIP,CN 规则在代理规则之前,且 DNS 设置正确 |
| 无法自动连接 | 检查"设置 → 通用 → VPN → 按需连接"是否启用 |
| 耗电异常 | 关闭"始终开启",改用"按域名"模式 |
注意事项
- DNS 解析:务必使用非大陆 DNS(如 1.1.1.1),否则 DNS 污染会导致国内域名误判为需要代理
- 规则顺序:规则从上到下匹配,精细规则在前,兜底规则在后
- 证书问题:如果使用 MITM(HTTPS 解密),需确保证书已安装并信任
- iOS 限制:部分 App 可能绕过 VPN(如部分银行 App),这是 iOS 系统限制
推荐配置模板
[General] dns-server = 1.1.1.1, 8.8.8.8 bypass-system = true skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local [Rule] # 国内直连 DOMAIN-SUFFIX,cn,DIRECT DOMAIN-SUFFIX,baidu.com,DIRECT DOMAIN-SUFFIX,taobao.com,DIRECT GEOIP,CN,DIRECT # 代理规则 DOMAIN-SUFFIX,google.com,PROXY DOMAIN-SUFFIX,youtube.com,PROXY DOMAIN-SUFFIX,twitter.com,PROXY DOMAIN-SUFFIX,github.com,PROXY # 兜底 FINAL,DIRECT
这样配置后,Shadowrocket 会在后台静默运行,访问国内网站时 VPN 图标不显示(直连),访问海外网站时自动建立连接,实现无缝切换。