从入门到精通的 iOS 网络代理配置手册
工具定位与核心架构
Shadowrocket 是 iOS/iPadOS 平台上基于 Network Extension 框架开发的全局网络代理客户端,其核心采用 TUN 虚拟网卡 技术(Packet Tunnel Provider),通过创建虚拟网络接口 utun 实现系统级流量拦截与转发。
技术特性矩阵:
- 协议支持:Shadowsocks (AEAD/stream)、VMess (VLESS/XTLS)、Trojan、Hysteria、TUIC、WireGuard、HTTP/HTTPS/SOCKS5
- 路由引擎:基于 GeoIP/GeoSite 的规则分流系统(类 Surge 语法)
- 脚本系统:JavaScript 运行时(基于 JavaScriptCore),支持 HTTP 请求修改与响应处理
- MitM 能力:HTTPS 流量解密与证书管理(需安装 CA 证书)
初始配置与节点管理
1 配置文件结构解析
Shadowrocket 使用 .conf 或 .json 格式的配置文件,核心节点包含:
[General] bypass-system = true skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 dns-server = 223.5.5.5, 8.8.8.8 fallback-dns-server = 1.1.1.1 ipv6 = false [Proxy] DIRECT = direct REJECT = reject 节点1 = ss, 1.2.3.4, 8388, encrypt-method=aes-256-gcm, password=xxx, udp-relay=true [Proxy Group] 自动选择 = url-test, 节点1, 节点2, url=http://www.gstatic.com/generate_204, interval=600 全球直连 = select, DIRECT, 节点1 [Rule] DOMAIN-SUFFIX,apple.com,全球直连 GEOIP,CN,全球直连 FINAL,自动选择
2 订阅链接处理机制
- 自动更新:设置
Update Interval后,应用会在后台通过BGTaskScheduler刷新订阅 - 订阅转换:支持订阅链接的 Base64/JSON 格式自动识别,可通过
Script模块对订阅内容进行预处理
规则分流系统深度配置
1 规则类型优先级
Shadowrocket 采用自上而下的匹配机制,规则优先级如下:
- DOMAIN(精确域名匹配,O(1) 哈希查找)
- DOMAIN-SUFFIX(后缀树匹配,支持通配符如
*.google.com) - DOMAIN-KEYWORD(子串匹配,性能开销较大,慎用)
- IP-CIDR(CIDR 段匹配,支持 IPv6)
- GEOIP(MaxMind GeoLite2 数据库查询)
- FINAL(兜底规则)
性能优化建议:将高频命中规则前置,避免大量使用 DOMAIN-KEYWORD。
2 分流策略实战配置
# 国内直连优化 DOMAIN-SUFFIX,cn,DIRECT DOMAIN-KEYWORD,baidu,DIRECT GEOIP,CN,DIRECT # 流媒体分流(以 Netflix 为例) GEOIP,NETFLIX,Proxy DOMAIN-SUFFIX,netflix.com,Proxy DOMAIN-SUFFIX,nflxvideo.net,Proxy # 广告拦截(配合 reject 策略) DOMAIN-KEYWORD,admarvel,REJECT DOMAIN-SUFFIX,doubleclick.net,REJECT
DNS 解析与防泄漏机制
1 DNS 处理流程
- 系统 DNS 查询 → 被 Shadowrocket 拦截
- 本地 DNS 解析:
- 若域名命中规则为
DIRECT→ 使用dns-server列表查询 - 若域名命中规则为
Proxy→ 通过代理隧道查询(防止 DNS 污染)
- 若域名命中规则为
- IPv6 处理:设置
ipv6 = false时,会过滤 AAAA 记录返回
2 防止 DNS 泄漏配置
[General] dns-server = 223.5.5.5, 119.29.29.29 doh-server = https://dns.alidns.com/dns-query fallback-dns-server = 1.1.1.1, 8.8.8.8 dns-fallback-on-failure = true
关键参数说明:
doh-server:DNS over HTTPS,防止中间人篡改fallback-dns-server:当主 DNS 无响应时的备用服务器dns-fallback-on-failure:主 DNS 返回空结果时启用 fallback
高级功能:脚本与 MitM
1 JavaScript 脚本系统
Shadowrocket 支持两种脚本类型:
HTTP 请求修改脚本:
// 修改请求头
var modifiedHeaders = $request.headers;
modifiedHeaders['User-Agent'] = 'CustomAgent/1.0';
$done({headers: modifiedHeaders});
响应体修改脚本(需开启 MitM):
// 解锁部分区域限制(示例)
var body = $response.body;
body = body.replace(/"region":"CN"/g, '"region":"US"');
$done({body: body});
2 HTTPS 解密(MitM)配置
- 生成 CA 证书:设置 → 证书 → 生成新的 CA 证书
- 安装信任:安装后需前往 iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 完全信任
- 主机名配置:
[MITM] hostname = *.example.com, api.twitter.com
安全警告:MitM 会解密 HTTPS 流量,仅在受信任网络环境下使用,避免敏感信息泄露。
性能优化与故障排查
1 连接优化参数
[General] tcp-fast-open = true # TFO 加速,减少 TCP 握手延迟 udp-relay = true # UDP 转发,用于游戏/视频通话
2 日志诊断方法
- 开启日志:设置 → 日志记录 → 开启
- 查看实时日志:通过 Widget 或快捷指令查看
- 常见错误码:
ECONNREFUSED:节点端口未开放或防火墙拦截ETIMEDOUT:网络超时,检查节点延迟SSL handshake failed:证书不匹配或 SNI 被干扰
3 电池优化策略
- 关闭
IPv6可减少 15-20% 的 CPU 占用 - 使用
url-test而非load-balance避免频繁切换节点 - 限制
Script执行超时时间(默认 10s)
企业级部署建议
1 配置文件签名
对于团队部署,建议使用 Shadowrocket Pro 的远程配置功能,通过 HTTPS 托管签名配置文件,防止配置被篡改。
2 分流规则维护
建议采用 GeoSite 数据库 替代大量手动规则:
[Rule] GEOSITE,category-ads-all,REJECT GEOSITE,apple-cn,DIRECT GEOSITE,google,Proxy
合规性声明
Shadowrocket 作为网络调试工具,请确保您的使用符合当地法律法规,本指南仅供技术学习交流,请勿用于:
- 绕过网络审查进行非法活动
- 未经授权访问受保护网络
- 传播恶意软件或进行网络攻击
附录:快速配置模板
[General] bypass-system = true skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local, captive.apple.com dns-server = 223.5.5.5, 119.29.29.29 fallback-dns-server = 1.1.1.1 ipv6 = false [Proxy] # 在此处添加您的节点信息 [Proxy Group] Proxy = select, 自动选择, 手动选择, DIRECT 自动选择 = url-test, 节点1, 节点2, url=http://www.gstatic.com/generate_204, interval=300 手动选择 = select, 节点1, 节点2 [Rule] DOMAIN-SUFFIX,cn,DIRECT DOMAIN-KEYWORD,baidu,DIRECT GEOIP,CN,DIRECT FINAL,Proxy
如需针对特定官方文档段落进行深度解读,请提供具体文档内容,我将为您进行针对性分析。