Shadowrocket 完全配置与进阶使用指南

从入门到精通的 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 采用自上而下的匹配机制,规则优先级如下:

  1. DOMAIN(精确域名匹配,O(1) 哈希查找)
  2. DOMAIN-SUFFIX(后缀树匹配,支持通配符如 *.google.com
  3. DOMAIN-KEYWORD(子串匹配,性能开销较大,慎用)
  4. IP-CIDR(CIDR 段匹配,支持 IPv6)
  5. GEOIP(MaxMind GeoLite2 数据库查询)
  6. 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 处理流程

  1. 系统 DNS 查询 → 被 Shadowrocket 拦截
  2. 本地 DNS 解析
    • 若域名命中规则为 DIRECT → 使用 dns-server 列表查询
    • 若域名命中规则为 Proxy → 通过代理隧道查询(防止 DNS 污染)
  3. 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)配置

  1. 生成 CA 证书:设置 → 证书 → 生成新的 CA 证书
  2. 安装信任:安装后需前往 iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 完全信任
  3. 主机名配置
    [MITM]
    hostname = *.example.com, api.twitter.com

安全警告:MitM 会解密 HTTPS 流量,仅在受信任网络环境下使用,避免敏感信息泄露。


性能优化与故障排查

1 连接优化参数

[General]
tcp-fast-open = true  # TFO 加速,减少 TCP 握手延迟
udp-relay = true      # UDP 转发,用于游戏/视频通话

2 日志诊断方法

  1. 开启日志:设置 → 日志记录 → 开启
  2. 查看实时日志:通过 Widget 或快捷指令查看
  3. 常见错误码
    • 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

如需针对特定官方文档段落进行深度解读,请提供具体文档内容,我将为您进行针对性分析。

您可以还会对下面的文章感兴趣: