Note
本使用手册以 Shadowrocket 官方群组 曾使用的关键词列表文件为基础进行完善更新,以帮助用户能够更好的理解和使用 Shadowrocket 软件。本仓以普通用户的身份对原作者及所有为相关项目做出贡献的人表示由衷的感谢!其他使用需求可尝试查看 配色与配置仓库
Tip
懒人配置 作者匿名,发布于 官方群组,是专为 懒人 打造的开箱即用的配置文件,它内置了近乎完整的使用手册,对每条命令都进行了详细的注释说明,适合几乎任何阶段的用户使用,是除默认配置外首推的配置文件。本仓与官方群组发布的版本保持同步更新,Johnshall 的版本也与本仓配置保持同步。对于新手用户而言更推荐 访问官方群组 使用离线版本
https://lowertop.github.io/Shadowrocket/lazy_group.confNote
Shadowrocket(常被用户称为“小火箭”)是一款由 Shadow Launch Technology Limited 专为 iOS 设备开发的网络代理工具,同时也支持 Apple TV 等设备,软件版本自 2.2.70 (2712) 起已正式支持 macOS,同时支持 x86/64 和 arm64
官方群组:Shadowrocket App
官方频道:Shadowrocket News
官方邮箱:buginapp@gmail.com
点击 目录标题 可以快速定位到相关正文
点击正文的 蓝色标题 可以快速回到目录
Shadowrocket 兼容多种服务器订阅格式,以及支持多种 代理协议类型 包括 WireGuard 节点
首页 > 左上角 > 扫码添加
此操作须开启摄像头权限
复制节点链接,如
trojan://*vmess://*vless://*等,打开 Shadowrocket 时会自动识别导入此操作须开启剪贴板读取权限
首页 > 右上角
➕> 类型Subscribe> URL 栏输入服务器订阅链接 > 保存订阅链接后面加上 "#1"、"#2"、"#3" 等,可以重复添加同一个订阅
首页 > 右上角
➕,选择对应节点类型,填写节点配置信息并保存Shadowrocket 为了兼容部分其他类型的配置文件,也支持在配置文件中 编写本地节点 信息,但不要当作 添加节点 的优先选择
若添加或更新订阅时出现异常,请参见 订阅异常
首页 > 右上角
➕> 类型选择WireGuard,填写配置信息复制如下格式的
WireGuard配置信息,打开 Shadowrocket 时会自动弹出 添加对话框,点击添加[Interface] PrivateKey = xxxxxx Address = 172.16.0.2/32 DNS = 1.1.1.1 MTU = 1420 [Peer] PublicKey = xxxxxx AllowedIPs = 0.0.0.0/0 AllowedIPs = ::/0 Endpoint = engage.cloudflareclient.com:2408 Reserved = 12,34,56如果没有自动弹出对话框,可能是因为设置中的 允许检测剪贴板 被关闭了,您可以重新打开,或者点击首页 连通性测试 下方的 粘贴 按钮,手动添加配置信息
现阶段已支持的协议类型
Subscribe(订阅)、Shadowsocks、ShadowsocksR、Vmess、VLESS、Relay、Socks5、Socks5 Over TLS、HTTP、HTTPS、HTTP2、Trojan、Hysteria、Hysteria2、AnyTLS、TUIC、Juicity、SSH、WireGuard、Snell v1-3、Brook、Lua
也可以在 首页 > 右上角
➕> 类型 中查看各协议节点的纯文本格式参见 编写本地节点
订阅右滑 > 更新
点击首页的更新订阅按钮🔄
设置 > 订阅 > 打开时更新(刷掉后台,重新打开应用程序时会自动更新订阅)
设置 > 订阅 > 自动后台更新(需在系统 设置 > 通用 > 后台App刷新 中开启对 Shadowrocket 的允许,更新周期可设1-24小时)
Shadowrocket 提供了 更新订阅 的快捷指令,可以实现自动化操作
长按屏幕的应用图标 > 更新订阅
若添加或更新订阅时出现异常,请参见 订阅异常
- 设置 > 订阅 > 根据
Ping排序该操作支持节点按照延迟测试后得到的延迟数值进行由低到高的自动排序
节点分享
长按节点 > 拷贝,可以把节点链接分享给其他设备
左滑节点 > 二维码,其他设备可以通过扫码添加节点(二维码页面点击右上角的 分享 按钮,可以选择其他形式传送二维码)
节点二维码缺乏统一标准。当使用其他代理工具扫码添加某些节点时,可能会丢失部分节点信息,导致不能连接。如果遇到此问题,请仔细检查同一个节点的各项配置信息是否一致
点击节点后面的
ⓘ图标,滑动至页面底部,有多种分享节点的菜单展开节点列表,点击连通性测试下方的编辑按钮
•••,勾选需要分享的节点,点击左上角的 复制,可以把多个节点链接同时分享给其他设备节点整理
调整顺序:点击编辑按钮
•••,或者长按首页右上角的➕,即可进入编辑模式,按住订阅或节点后面的≡图标可以调整订阅或节点之间的上下顺序(本地节点默认置顶位置)节点分类:非订阅形式添加的节点,默认会归类为 本地节点。如果需要重新对本地节点进行分类,可以使用 折叠 功能。点击编辑按钮
•••,勾选节点,点击左上角的 折叠,为新分类的节点组命名(折叠 功能可以选择本地节点或者订阅节点)删除节点:点击编辑按钮
•••,点击左上角的 删除,可以选择删除全部节点或者删除连通性测试结果中的超时节点滑动菜单:向右滑动订阅,可以选择 测试 当前订阅节点的连通性,或者 更新 当前订阅节点。向右滑动节点,点击 测试 可以获取单个节点的连通性测试结果,点击 复制,可以在当前节点列表中新增一个同样配置信息的节点
节点筛选
首页 > 订阅后面的
ⓘ图标 > 过滤
- 保留节点名称含有关键词 A 和 B 的节点:
/(?=.*(A))^(?=.*(B))^.*$/- 保留节点名称含有关键词 A 或 B 的节点:
A|B- 排除节点名称含有关键词 A 或 B 的节点:
/^((?!(A|B)).)*$/- 保留节点名称含有关键词 A 并排除含有关键词 B 的节点:
/(?=.*(A))^((?!(B)).)*$/分组、代理分组中的正则写法与上述【过滤】中使用的命令相同,但需删除前后 "/" 符号
批量整理
节点订阅筛选功能支持使用脚本代码批量整理和修改相应订阅中节点的功能选项及节点名称
批量给节点中的关键词 a 替换成 b:
$server.title=$server.title.replace(/关键词a/g,'关键词b')批量给节点名称增加 abc 开头的关键词:
$server.title='abc'+$server.title批量给节点名称增加 abc 结尾的关键词:
$server.title=$server.title+'abc'批量开启全部节点的片段:
$server.reserved="1,40-60,30-50"批量开启全部节点的多路复用:
$server.mux=1批量设置全部订阅节点的 代理链/链式代理/代理通过,以下两种方式以生效者为准
$server.chain="订阅名称/节点名称"$server['dialer-proxy']="UUID值"其中 “UUID 值” 可在中转节点或订阅的 JSON 文本中复制,第一种命令的 “订阅名称/节点名称” 也可以使用 UUID 值
当节点名称不包含地区标识,且节点地址有可以分辨地区的关键词时,可以使用以下脚本为节点名称批量添加地区关键词或旗帜标识
if (/节点地址关键词/i.test($server.host)) { $server.title = '需要添加的关键词或旗帜'+ $server.title return true; }其他命令
该功能也支持更复杂的脚本指令,可以参阅 此处示例
当前代理通过另一个代理进行连接,支持多级链式代理,但并非所有协议都支持使用代理链。使用代理链方法:
- 使用节点 A 连接,点击节点 A 后面的
ⓘ图标,代理通过 选择节点 B,流量走向:Client > B > A > Web server- 支持使用分组/代理分组作为中转代理
- 支持批量修改订阅节点的代理链,可实现同时部署多个节点的链式代理。具体命令可查看 订阅节点筛选 > 批量整理 中的相关指令
- 取消代理通过/代理链:点击开启该功能节点后面的
ⓘ图标,代理通过 选择右上角的 取消 后保存
- 配置:流量根据设定规则进行分配,有些通过节点连接,有些则不通过
- 代理:全部流量都通过同一个节点连接
- 直连:全部流量都不通过节点连接
- 场景:根据不同的网络连接类型(Wi-Fi、蜂窝数据)自动切换到预先设置的路由模式,并选择对应的配置文件和节点连接
点击首页的 连通性测试,节点列表将会显示以毫秒(ms)为单位的延迟数字,这是数据包的传输时间,不同的 延迟测试方法 对应不同的计算结果。长按首页的 连通性测试,可以临时调整测试方法,仅对本次测试生效
设置 > 延迟测试方法
- TCP:建立
TCP连接的往返时间- ICMP:发送
ICMP回显请求报文和接收ICMP回显应答报文的往返时间- CONNECT:向测试 URL 发送一个
HTTP HEAD请求,测量从发送请求到接收响应头部信息的往返时间请优先选择
CONNECT,因为它更能准确反映节点的连通性。延迟大小与网络上传下载速度没有直接关系,测速请使用其他方法,如:https://www.speedtest.net
用于首页和分组节点的延迟测试
- 设置 > 延迟测试方法 > URL 测试设置
- 首页 > 连通性测试后面的圆形图标 > URL 测试设置
用于代理分组内节点的延迟测试
- 点击配置文件的
ⓘ图标 > 代理分组 > 编辑或添加包含自动测试类型的分组 > 最下方 URL 栏
场景是根据不同的网络连接类型(Wi-Fi、蜂窝数据)自动切换到预先设置的路由模式,并选择对应的配置文件和节点连接
- 首页 > 全局路由 > 设置的 场景 > 添加场景
- 为指定的网络连接类型设置对应的路由模式(配置、直连、代理),类型(节点、分组)、配置文件 及 备注
- 网络连接类型分别为:Wi-Fi、蜂窝数据、默认。选择Wi-Fi类型时,SSID需填写Wi-Fi名称
- 首页 > 全局路由 > 选择 场景
软件支持添加蜂窝数据场景,支持以 网络接口 作为匹配条件
- 默认(留空)代表接口
pdp_ip0- 当设备启用了多个蜂窝数据网络时,可在 Shadowrocket 的 设置 > 诊断 > 网络 中查看对应的接口信息
- 输入格式:
pdp_ip1pdp_ip2pdp_ip3等首次添加场景,可能会弹出申请权限的对话框,具体原因请看 权限。当没有允许定位权限时,场景列表的 ✅ 标记不会随着网络类型的切换而自动切换,但这不影响场景功能的正常生效
设置 > 隧道/按需求连接 中的 包含所有网络 相关选项可能会对场景模式的生效造成影响
简单模式是一种以相对简单的方式实现自动测试并选择延迟低的节点进行连接的设置模式
- 首页 > 全局路由 > 分组 > 简单模式
节点的范围是什么?
当开启简单模式,此时下方会出现分组选项,如果没有继续添加分组的操作,节点范围就是首页全部节点,如果添加分组,范围就变成分组里的节点
自动测试的周期是多久?延迟低的判断依据是什么?
设置 > 延迟测试方法 > URL测试设置,这里规定了测试的间隔时间,默认 600s,即表示每 10 分钟自动进行一次节点延迟测试。相邻两次测试结果中最小延迟值的对比,根据公差机制决定是否切换节点,公差越大,触发节点切换的频次越低,默认 0ms,即表示只要后面测试结果的最低延迟节点比前面测试结果的最低延迟节点延迟小就会自动切换
切换的节点给什么规则使用?
Shadowrocket 内置策略
proxy,简单模式时自动切换的节点使用于所有指向proxy策略的规则简单模式是自动切换延迟低节点,代理分组的 url-test 类型也是自动切换延迟低节点,两者有何不同?
代理分组创建后,需要在规则中修改策略指向,而简单模式已经关联
proxy策略,节省了修改规则的步骤
全局路由 选择 代理 时将导致所有 代理分组 失效,而简单模式依然能够实现自动切换节点添加分组时,
测速开关是什么作用?开启测速,这个分组才允许自动切换节点。不开启测速,这个分组只能手动选择节点
首页 > 全局路由 > 启用回退
启用回退 的功能是当节点连接失败时自动切换其他可用节点
Note
Shadowrocket 的配置文件(通常以 *.conf 格式存在)主要用于快速设置和调整软件的主要功能。配置文件还可以在多设备间同步以及分享配置文件给其他用户,以快速部署相同设置、简化用户手动配置的流程。用户可以在配置文件里设置 通用参数、添加规则、Hosts、URL重写、HTTPS解密、脚本等内容。模块 的写法与配置文件相同
同时,Shadowrocket 支持在配置文件中 编写本地节点,但该操作方式仅是为了兼容部分其他类型的配置文件,不能当作 Shadowrocket 添加节点 的优先选择
Shadowrocket 内置了一个默认配置文件
default.conf,其中包含了国内外主要网站或服务的分流规则,一般可以满足大多数用户的基本需求。此配置文件的内容跟随应用更新而做不定期的调整。如果在使用过程中错误修改或误删配置文件,可以点击 配置 > 恢复默认配置。添加配置文件方法:
点击配置文件,显示操作菜单(以下选项可能因不同的软件版本而有所不同):
点击配置文件的
ⓘ图标或点击 编辑配置,进入编辑菜单(以下选项可能因不同的软件版本而有所不同):
使用 UI 交互界面对配置文件的可设置项进行调整。部分设置或命令 不提供 UI 编辑界面,如有需要可在 纯文本编辑 中使用
使用纯文本模式对配置文件的可设置项进行调整。部分设置或命令 不提供 UI 编辑界面,仅在纯文本模式下可以设置
配置文件的纯文本编写方法可以参考:
点击 编译配置 可以对该配置文件进行重新编译。可以理解为软件将该配置文件重新编辑并转译为符合当前版本规范和逻辑的底层格式。该功能会更新该配置文件所用到的 规则集、脚本 等远程资源。仅当软件版本大于等于特定版本时才具有该选项
查看配置文件的纯文本格式。该选项仅当配置文件是以远程配置文件的形式添加进来的才会出现
使用当前配置文件的远程版本对当前文件进行覆盖更新。该选项仅当配置文件是以远程配置文件的形式添加进来时才会出现,该功能一般适用于在远端维护的配置文件或远程配置需要恢复时使用。除更新配置设置外该功能还会同时更新该配置所用的 规则集、脚本 等远程资源,若仅需要更新规则集等远程资源,请使用 使用配置 / 编译配置 功能。软件同时提供自动更新功能,相关说明及其他技巧请点击查看 自动更新 词条
Caution
更新配置会覆盖在本地对配置文件所做的修改,对于在本地修改过的远程配置而言需要谨慎使用此功能
重命名当前配置文件
将当前配置文件以文件的形式导出
从配置 a 扩展出配置 b,此时默认关系是 b 包含 a,也可以理解为 b 继承了 a 的内容
配置 b 优先级高于配置 a,该功能是对配置建立包含关系,以满足同时使用多个配置的需求
点击配置文件的
ⓘ图标 > 通用 > 包含配置,可以修改或解除包含关系
旁路系统(bypass-system):如果禁用此选项,可能会导致一些系统问题,如推送通知延迟
跳过代理(skip-proxy):跳过代理接口,使用 TUN 接口接管。此选项强制列表中的域名或 IP 的连接范围交由 Shadowrocket TUN 接口 来处理,而不是 Shadowrocket 代理接口。此选项用于提高部分应用程序对于代理环境的兼容性。若开启 TUN 模式 时,将强制使用 TUN 接管所有连接,此处地址列表可以忽略。需要注意,该选项并非将设定的地址使用直连进行连接,仅表示使用 TUN 接口处理
TUN旁路路由(tun-excluded-routes):Shadowrocket TUN 接口 只能处理 TCP 协议。使用此选项可以绕过指定的 IP 范围,让其他协议通过
DNS覆写(dns-server):使用普通 DNS 或加密 DNS(如
dohdoqdot等)覆盖默认的系统 DNS。DNS 覆写支持同时添加多个地址,Shadowrocket 采用并行查询的方式进行解析请求,最先返回的结果将被采用。有些dns over https支持http3,所以将会尝试查询,如果支持就切换到http3,可在doh链接后面加上#no-h3关闭。doh强制通过h3查询的写法是将https改成h3,如h3://dns.alidns.com/dns-query。DNS 覆写仅针对直连类域名进行解析,代理类域名将经由代理服务器进行解析,其他示例或写法参见:修改DNS、DNS-over-PROXY备用DNS(fallback-dns-server):当覆写 DNS 查询失败或查询时间超过2秒,Shadowrocket 会自动回退备用 DNS。如需指定多个 DNS,可用逗号分隔。
system表示回退到系统 DNS,清空备用 DNS 等于将其设置为system启用IPv6支持(ipv6):
false表示不启用,true表示启用。即使不启用此选项,当本地网络环境支持 IPv6,并且节点域名支持 IPv6 解析,Shadowrocket 也会使用节点的 IPv6 地址进行访问。解决方法是关闭节点域名的 IPv6 解析,或者在配置文件的[Host]项目下为节点域名指定 IP 地址首选IPv6(prefer-ipv6):优先向 IPv6 的 DNS 服务器查询
AAAA记录,优先使用AAAA记录。false表示不启用私有IP应答(private-ip-answer):如果不启用该选项,域名解析返回私有 IP,Shadowrocket 会认为该域名被劫持而强制使用代理
TUN包含路由(tun-included-routes):默认情况下,Shadowrocket 接口会声明自己为默认路由,但由于 Wi-Fi 接口的路由较小,有些流量可能不会通过 Shadowrocket 接口。使用此选项可以添加一个较小的路由表
总是真实IP(always-real-ip):这个选项要求 Shadowrocket 在
TUN处理 DNS 请求时返回一个真实的 IP 地址而不是假的IP地址DNS劫持(hijack-dns):有些设备或软件总是使用硬编码的 DNS 服务器,例如 Netflix 通过 Google DNS(
8.8.8.8或8.8.4.4)发送请求,您可以使用此选项来劫持查询包含配置(include):表示当前配置包含另一个配置的内容,当前配置的优先级高于被包含配置。该选项是对配置建立包含关系,以满足同时使用多个配置的需求
以下参数为隐藏属性,建议谨慎设置。相关选项仅支持纯文本模式进行设置,不提供 UI 操作选项
💡 dns-direct-system:直连的域名类规则使用系统 DNS 进行查询。
false表示不启用💡 icmp-auto-reply:ping 数据包自动回复
💡 always-reject-url-rewrite:不开启时,「重写的REJECT策略」默认只有在配置模式下生效。开启后,可以令该策略在其他全局路由模式下都生效
💡 dns-direct-fallback-proxy:直连域名解析失败后使用代理。
false表示不启用💡 udp-policy-not-supported-behaviour:当 UDP 流量匹配到规则里不支持 UDP 转发的节点策略时重新选择回退行为,可选行为包括
DIRECTREJECT。DIRECT表示直连转发 UDP 流量,REJECT表示拒绝转发 UDP 流量💡 stun-response-ip:此选项包含两个命令:
stun-response-ip和stun-response-ipv6。该选项允许返回一个虚假的IP地址,如stun-response-ip=1.1.1.1stun-response-ipv6=::1,目的是防止真实IP地址泄漏,提高 WebRTC 的隐私和安全性。使用此命令将忽略软件设置选项内的 禁用STUN 的启用状态💡 compatibility-mode:网络兼容模式。
0 > 自动/禁用;1 > Proxy with Loopback Address;2 > Proxy Only;3 > TUN Only;4 > Proxy without Loopback Address;5 > No Default Route。本设置的优先级高于软件设置内的相关选项。当参数的值设定为3时的效果等同于启用 Tun模式:设置 > 代理 > 代理类型 > None。当参数的值设定为5时的效果等同于启用 兼容模式:设置 > 代理 > 兼容模式💡 always-ip-address:强制所有域名使用本地 DNS 解析。设置为
true表示启用。(此参数为隐藏属性,建议谨慎设置,可能导致相关域名的 CDN 失效。)💡 proxy-dns-server:通过
proxy-dns-server =参数来使用特定 DNS 解析所有节点域名。若未设置此参数,节点域名默认使用 dns-server 进行解析,对于 DNS-over-PROXY 则使用系统 DNS 解析💡 close-if-proxy-chain-missing:代理链丢失关闭连接。当设置为
true时,若 代理链 中的中转节点丢失则Reject代理连接;当设置为false时等同于不设置该命令,即若 代理链 中的中转节点丢失则跳过中转节点直接连接落地节点使用💡 ipv6-only-if-no-ipv4-dns:当设置为
true时,如果设备在网络环境中仅获取到 IPv6 的 DNS 而未获取到 IPv4 的 DNS,此时软件将认为网络环境是IPv6 Only网络💡 block-quic:QUIC协议屏蔽策略。支持使用
all-proxy、all、always-allow对 QUIC 传输层协议进行设置。其中all-proxy表示只对“走代理的连接”阻断 QUIC,直连连接(DIRECT)不会被干预;all表示对所有连接(包括直连与代理)都屏蔽 QUIC,这会完全禁止系统中一切 UDP/443 流量;always-allow表示始终允许 QUIC,不做任何屏蔽,等同于“关闭 QUIC 屏蔽”💡 use-local-host-item-for-proxy:本地 HOST 映射对代理生效。在默认情况下,对于代理类的 DNS 解析始终在远端服务器上执行。当设置为
true时,若存在本地 DNS 映射,Shadowrocket 将在代理连接中使用映射后的地址,而不是原始的主机名💡 allow-dns-svcb:允许 DNS SVCB 查询。系统可能会执行 SVCB 记录 DNS 查询,而不是标准的 A 记录查询。这会导致无法返回虚拟 IP 地址。因此,默认情况下禁止执行 SVCB 记录查询,以强制系统执行 A 记录查询
Shadowrocket 或还有其他支持的隐藏参数,此处可能未能完全列出,若有相关需求请联系 buginapp@gmail.com
在 Shadowrocket 中,"规则"是指用来决定哪些网络请求应该走代理、哪些请求应该直接连接互联网的规则集合。规则通常是基于用户的需求来配置 规则策略,目的是实现对流量的精细控制。软件对规则集的识别不受文件后缀的影响,是以规则集的内容为识别标准
数据 > 代理 > 启用日志记录,产生网络活动后回到该页面,从最近的日志中查看网络活动记录,点击任一记录查看详情,点击右上角
•••选择类型添加规则规则匹配需要着重注意 规则的优先级 顺序
规则管理
配置 > 配置文件 > 编辑配置 > 规则 > 规则区域右上角
···可选择并批量删除规则
规则的匹配是从上到下逐条匹配的,一旦匹配到某条规则,Shadowrocket 就会停止继续匹配,因此规则的顺序非常重要,优先级高的规则应该放在前面
- 模块中的规则优先于配置文件
- 上面的规则优先于下面的规则
- 域名类的规则优先于IP类规则
此外,规则的优先级在自动编译配置时同时遵循“显式优先、推断其次、最终兜底”的原则。其中可被直接、精确匹配的显式规则(如
DOMAIN、DOMAIN-SUFFIX、URL-REGEX等)具有最高优先级。而基于地域或数据库判断的推断类规则(如GeoIP)会在自动编译过程中被放置在显式规则之后。FINAL规则作为兜底项,始终位于整个规则集的最末尾
DOMAIN-SUFFIX:匹配请求域名的后缀
如
DOMAIN-SUFFIX,example.com,DIRECT可以匹配到a.example.coma.b.example.comDOMAIN-KEYWORD:匹配请求域名的关键词
如
DOMAIN-KEYWORD,exa,DIRECT可以匹配到a.example.coma.b.example.comDOMAIN-WILDCARD:匹配请求域名,支持使用通配符
*、?如
DOMAIN-WILDCARD,a*c.example*.com,DIRECT可以匹配到abc.example123.com、aqwec.example456.comDOMAIN:匹配请求的完整域名。当为
DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD等相似类型分别设置相同的值时,只有其中一种类型会生效如
DOMAIN,www.example.com,DIRECT只能匹配到www.example.comUSER-AGENT:匹配用户代理字符串,支持使用通配符
*如
USER-AGENT,MicroMessenger*,DIRECT可以匹配到MicroMessenger ClientURL-REGEX:匹配 URL 正则式
如
URL-REGEX,^https?://.+/item.+,REJECT可以匹配到https://www.example.com/item/abc/123IP-CIDR:匹配 IPv4 或 IPv6 地址
如
IP-CIDR,192.168.1.0/24,DIRECT可以匹配到 IP 段192.168.1.1~192.168.1.254。当域名请求遇到IP类规则时,Shadowrocket 会向本地 DNS 服务器发送查询请求,以判断主机 IP 是否匹配规则。若 IP 类规则加no-resolve(如:IP-CIDR,172.16.0.0/12,DIRECT,no-resolve),则域名请求将会跳过此规则,不会触发本地DNS查询IP-ASN:匹配 IP 地址隶属的 ASN 编号
如
IP-ASN,56040,DIRECT可以匹配到属于 China Mobile Communications Corporation 网络的 IP 地址RULE-SET:匹配规则集内容。规则集的组成部分需包含规则类型
DOMAIN-SET:匹配域名集内容。域名集的组成部分不包含规则类型
SCRIPT:匹配脚本名称
DST-PORT:匹配目标主机名的端口号
如
DST-PORT,443,DIRECT可以匹配到 443 目标端口GEOIP:匹配 IP 数据库
如
GEOIP,CN,DIRECT可以匹配到归属地为CN的IP地址FINAL:兜底策略
如
FINAL,PROXY表示当其他所有规则都匹配不到时才使用FINAL规则的策略AND:逻辑规则,与规则
如
AND,((DOMAIN,www.example.com),(DST-PORT,123)),DIRECT可以匹配到www.example.com:123NOT:逻辑规则,非规则
如
NOT,((DST-PORT,123)),DIRECT可以匹配到除了123端口的其他所有请求OR:逻辑规则,或规则
如
OR,((DST-PORT,123),(DST-PORT,456)),DIRECT可以匹配到123或456端口的所有请求PROTOCOL:匹配传输协议类型
PROTOCOL类型不支持单独使用,只能作为子规则类型嵌套于逻辑规则当中。如AND,((PROTOCOL,UDP),(DST-PORT,443)),REJECT-NO-DROP
PROXY:代理。通过代理服务器转发流量
DIRECT:直连。连接不经过任何代理服务器
REJECT:拒绝。返回 HTTP 状态码 404,没有内容
REJECT-DICT:拒绝。返回 HTTP 状态码 200,内容为空的JSON对象
REJECT-ARRAY:拒绝。返回 HTTP 状态码 200,内容为空的JSON数组
REJECT-200:拒绝。返回 HTTP 状态码 200,没有内容
REJECT-IMG:拒绝。返回 HTTP 状态码 200,内容为 1 像素 GIF
REJECT-TINYGIF:拒绝。返回HTTP状态码200,内容为 1 像素 GIF
REJECT-DROP:拒绝。丢弃 IP 包
REJECT-NO-DROP:拒绝。返回 ICMP 端口不可达
除此之外,规则策略还可以选择
分组代理分组订阅服务器节点等
Extended Matching:扩展匹配。代表将尝试同时匹配
SNI和HTTP主机标头。适用于DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD等域名规则。Shadowrocket 默认支持extended-matching,已默认开启SNI匹配Pre Matching:预匹配功能,可以快速、低开销地拒绝请求。对于使用 REJECT 策略的规则,可以通过 pre-matching 标记启用此功能预匹配。启用此参数的规则将在正常规则匹配过程之前生效,具有最高优先级
纯文本示例:
[Rule] DOMAIN,ad.com,REJECT,extended-matching,pre-matching
根据不同 App 或特定服务指定分流规则,并使其按照设定的规则执行代理策略
示例:YouTube App 分流走代理
- 复制 YouTube 的规则集链接
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/YouTube/YouTube.list- 点击配置文件的
ⓘ图标 > 规则 > 右上角➕,规则类型 选择RULE-SET,规则策略 选择PROXY,输入框内粘贴规则集链接,保存完成(规则策略可以根据需求使用其他选项或节点)iOS系统没有常规分应用代理的操作,只能通过
域名 / ip / ua规则实现app分流效果。可自行抓包,或者订阅 blackmatrix7 的 规则集。如果引用的链接是域名集,添加规则时,规则类型 请选择DOMAIN-SET
点击配置文件 > 编辑配置 > 规则 > 在规则集上左滑 > 预览
DNS覆写
点击配置文件
ⓘ图标 > 通用 > DNS 覆写
DNS 覆写为并发查询,若填写多个 DNS 服务,则使用最快返回的解析结果
支持普通 DNS 或加密 DNS(如 DoH、DoQ、DoT 等)。填 system 表示使用系统 DNS。也支持使用 通过代理转发 DNS 查询请求
DNS 覆写仅针对直连类域名进行解析,代理类域名将经由代理服务器进行解析普通 DNS 示例
dns-server = 223.5.5.5,119.29.29.29加密 DNS 示例
1、DNS-over-HTTPS(DoH)dns-server = https://dns.alidns.com/dns-query2、DNS-over-HTTP/3(DoH3)
dns-server = h3://dns.alidns.com/dns-query3、DNS-over-QUIC(DoQ)
dns-server = quic://223.5.5.54、DNS-over-TLS(DoT)
dns-server = tls://223.5.5.5备用DNS
当覆写的 DNS 查询失败或查询时间超过2秒后回退备用 DNS 进行查询。如需指定多个 DNS,可用逗号分隔。填写
system或者留空表示可回退到系统 DNS
通过代理转发 DNS 查询请求
proxy
支持使用 默认节点 转发 DNS 查询请求,有以下两种写法:
dns-server=https://dns.google/dns-query#proxydns-server=https://dns.google/dns-query#proxy=proxyproxy=name
支持使用 指定节点 转发 DNS 查询请求,需要注意此处的代理名称仅支持 URL 编码,以
香港 01示例:dns-server=https://dns.google/dns-query#proxy=%E9%A6%99%E6%B8%AF%2001此处指定的节点若填写不规范会自动回退至默认节点
ecs=子网范围
ecs 参数用于设置 EDNS Client Subnet (ECS),向 DNS 服务器传递客户端的子网信息。ECS 允许 DNS 服务器根据指定的子网范围(而非实际客户端 IP)来返回最优结果
示例:
dns-server=https://dns.google/dns-query#ecs=120.76.0.0/14|2620:149:af0::10/56&ecs-override=trueecs-override=true
ecs 参数的强制覆盖。即使客户端的实际 IP 提供了不同的地理位置,查询会强制使用 ecs 指定的子网范围
示例:
dns-server=https://dns.google/dns-query#proxy=name&ecs=1.1.0.0/14|2620:149:af0::10/56&ecs-override=true
当域名请求遇到 IP 类规则时,Shadowrocket 会向本地DNS服务器发送查询请求,以判断主机 IP 是否匹配规则
若IP类规则加
no-resolve,则域名请求将会跳过此规则,不触发本地 DNS 查询。如:IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
代理分组 也可称之为 策略组,是用来 灵活管理和切换不同代理节点、自动分流网络请求 的一种核心功能。它的作用类似于一个 智能路由系统,可以根据设定的规则将不同的流量导向不同的代理节点或行为。简单来说,它就是一个 容器,里面可以包含多个代理节点或其他代理分组。你可以根据需求通过 规则 → 代理分组 → 代理节点 的路径手动或自动切换。代理分组支持的类型可以查看:代理分组类型
点击配置文件的
ⓘ图标 > 代理分组 > 右上角➕。填写名称,根据需求选择 代理分组类型,通过正则匹配策略,或者从策略输入框后面的•••手动添加策略,保存策略是规则的组成部分,创建的代理分组只有放到规则里才能发挥作用
- 进入对应规则的详情页,点击策略选项,从列表中选择所需的代理分组,保存
- 代理分组中可以包含其他代理分组,形成层级结构,但需要注意各级代理分组的 类型
代理分组内的右上角设有 测试 按钮,点击 测试 可对当前分组内的节点进行延迟测试
- 代理分组下方设有 测试并选择最快服务器 选项
- 该选项开启后,将在手动点击右上角的 测试 后自动选择并使用延迟最低的节点
- 该选项的开启或关闭对全部代理分组同时生效
- 该选项仅存在于版本号大于等于 2.2.65 (2604) 的软件上
代理分组内设有 订阅 开关,开启开关会在下方出现 服务器节点 选项,需要进入选择所需要的订阅
- 开启 订阅 开关并选择所需订阅后,下方 策略 内会出现该订阅的所有节点
- 支持同时使用 正则表达式 对节点进行筛选,筛选范围受限于所选择的订阅
快捷进入代理分组
- 首页下拉,可以快捷进入代理分组界面
- 首页本地节点上方设有指示牌图标,点击该图标可以快捷进入代理分组界面,软件版本需大于等于 2.2.65 (2614)
代理分组其他设置参数
- interval:测试周期。指定间隔多长时间后需要重新发起测试
- timeout:超时时间。如果测试在超时前未完成,放弃测试
- tolerance:公差。只有当新优胜者的分数高于旧优胜者的分数加上公差时,才会进行线路更换
- url:测试地址。指定要测试的URL
- hidden:隐藏代理分组
select:允许用户手动选择一个子策略,可以指定其他代理分组或代理服务器。纯文本中设置为
0表示第一个策略,1表示第二个策略,2表示第三个策略,以此类推url-test:根据设定的自动测试周期和结果自动切换延迟最低的节点
fallback:节点不可用时自动切换其他可用节点,可用节点范围被上次自动测试结果所限
load-balance:不同规则的请求使用分组里的不同节点进行 负载均衡,相同的域名会使用同一个节点
random:随机使用分组里的不同节点进行连接,相同的域名可能使用不同的节点,该类型也可以用作 负载均衡
除 select 类型外,其他类型均属于自动切换节点的类型,若手动选择其包含的节点,受该分组下方的相关选项制约,同样会根据其设置自动切换节点。此类类型不推荐包含其他代理分组
自
Shadowrocket Version 2.2.66 (2649)版本开始,新增参数hidden=1,可用于在图形界面隐藏不希望展示的代理分组。当hidden设置为数值1时,表示隐藏当前代理分组;当设置为0时表示不隐藏,等同于不设置此参数。该功能仅提供纯文本编辑设置方式,无图形设置界面示例:
香港节点 = url-test,HK 01,HK 02,HK 03,policy-select-name=HK 01,interval=600,tolerance=100,timeout=5,url=http://www.gstatic.com/generate_204,hidden=1
代理分组类型 中的
load-balance、random表示将连接请求随机使用分组里的节点进行连接,能够尽可能将流量平均分配给所有子策略或代理。其中load-balance会将相同的域名使用同一个节点进行连接,random会将所有请求使用随机节点进行连接,不区分是否是同一个域名使用负载均衡的方法:
点击配置文件的
ⓘ图标 > 代理分组 > 右上角➕,类型选择load-balance或者random
配置 > 配置文件 > 编辑配置 > 规则集 URL
当前使用的所有远程规则资源的展示页面,其后显示的数字为当前成功下载的数量和总共包含的数量。进入后所显示的 ✅ 表示当前规则下载成功,❎ 表示当前规则下载失败。点击相应地址可重新拉取并弹出状态提示,但不会重新编译更新配置文件,点击 使用配置 / 编译配置,可以对当前所有 URL 进行更新并重新编译更新配置文件
配置 > 配置文件 > 编辑配置 > 脚本 URL
当前使用的所有远程脚本资源的展示页面,其后显示的数字为当前成功下载的数量和总共包含的数量。进入后所显示的 ✅ 表示当前脚本下载成功,❎ 表示当前脚本下载失败。点击相应地址可重新拉取并弹出状态提示,但不会重新编译更新配置文件,点击 使用配置 / 编译配置,可以对当前所有 URL 进行更新并重新编译更新配置文件
配置 > 点击配置文件 > 编辑配置 > 复制
点击该选项可将当前配置生成一份备份并命名为
*-copy.conf
配置 > 点击配置文件 > 编辑配置 > 替换策略
- 点击查找右侧的
ⓘ图标选择准备替换的策略,或输入准备替换的策略- 点击替换右侧的
ⓘ图标选择欲替换成的策略,或输入欲替换成的策略- 点击完成后替换完成
配置 > 测试规则
配置 > 点击配置文件 > 编辑配置 > 测试规则
- 基于当前配置进行规则策略测试
包含 本地值 和 DNS服务器 两种设定方式
主要功能
- 将特定域名映射到指定 IP 地址,绕过 DNS 解析,直接控制域名到 IP 的对应关系
- 将特定域名指定特定的 DNS 服务器进行解析
常见用途
- 屏蔽广告/追踪域名:将广告域名解析到无效 IP(如 0.0.0.0 或 127.0.0.1),使其无法加载
- 绕过 DNS 污染:强制将某些域名指向正确的 IP,避免被劫持
- 本地开发调试:将测试域名指向本地服务器 IP
- 加速访问:手动指定更快的 CDN IP
重写类型包含
HEADER、302、307以及其他支持的代理策略功能作用
- 修改 HTTP(S) 请求/响应,动态拦截并修改请求的 URL 或内容
常见用途
- 去广告:将广告请求重定向到空地址或本地
- 反追踪:移除 URL 中的跟踪参数
- 路径修正:调整请求路径以适配不同服务器
- 调试工具:将生产环境请求转发到测试服务器
支持 请求头/响应头 重写功能,即标头重写,包含
del、add、replace、replace-regex几种操作类型:
http-request:作用于请求头
http-response:作用于响应头行为:
header-del:从请求头或响应头中删除指定字段
header-add:向请求头或响应头中添加字段及其对应的值
header-replace:在请求头或响应头中替换指定字段的值
header-replace-regex:使用正则表达式在请求头或响应头中替换字段的值表达式:
正则表达式用于匹配目标网站的 URL
常用字段:
Content-Type、User-Agent、Accept-Language、Authorization、Host、Referer、Cookie、X-Forwarded-For、Location等
支持 请求体/响应体 重写功能,支持使用
jq语法类型:
http-request:作用于请求体
http-response:作用于响应体
http-request-jq:使用jq语法处理请求体
http-response-jq:使用jq语法处理响应体表达式:
正则表达式用于匹配目标网站的 URL
支持 本地映射 功能
类型:
text:返回文本类型响应
file:返回文件类型响应。文件内容不一定是本地文件,支持引用远程文件地址
tiny-gif:返回一个 1x1 像素的 GIF 图片
base64:返回 base64 编码数据类型响应表达式:
正则表达式用于匹配目标网站的 URL
数据:
填写所需返回的数据
额外请求头:
可选返回额外请求头
对正在使用的配置开启 HTTPS 解密才能使包含 MITM 的模块完整生效,不包含 MITM 的模块除外
打开HTTPS解密方法:
- 点击配置文件的
ⓘ图标 > HTTPS 解密 > 证书 > 生成新的 CA 证书 > 安装证书- 系统设置 > 已下载描述文件 > 安装
- 系统设置 > 通用 > 关于本机 > 证书信任设置 > 开启对应 Shadowrocket 证书信任
HTTPS解密仅对启用此功能的配置文件生效,若切换或更换配置文件需要对新配置文件重新 开启解密,为避免重复安装证书可使用 证书模块
若多终端经 iCloud 使用同一个配置文件,需要使用证书
ⓘ图标的复制粘贴功能将同一个证书在多个终端上进行安装信任
使用 JavaScript 拓展 Shadowrocket 的功能,规则示例如下:
[Script] script = type=rule,script-path=rule.js
模块是指为 Shadowrocket 提供额外功能的插件或者扩展项,一般是以增强或自定义软件的使用体验为出发点。模块的写法与 配置文件 相同,且模块的 规则优先级 高于配置文件。一般情况下,模块仅包含完整配置文件格式中的特定部分,以实现特定的特殊效果且不影响配置文件的其他功能。用户可以在模块里另外设置 通用参数 以及添加 规则、Hosts、URL重写、证书内容、解密主机名、脚本 等内容
下载远程模块
- 配置 > 模块 > 右上角
➕> 填写链接 > 下载本地新建模块
配置 > 模块 > 新建模块 > 编辑后保存
模块
[MITM]部分需要加%APPEND%,表示把内容插入到配置中,不加时会覆盖配置中对应内容,并影响其他模块功能。域名默认仅解密443端口,若域名使用非标端口号需要此处写明[MITM] hostname = %APPEND% 主机名模块管理
配置 > 模块 > 模块区域右上角
···可以对模块顺序进行重新排序,并可以选择并批量删除/启用/禁用选定的模块
备注
配置 > 模块 > 点击模块 > 编辑参数 > 按需填写或修改
Shadowrocket 的 编辑参数 / 传递参数 功能,是用于对请求或响应中的参数进行动态修改的一个高级功能,可用于配合模块中的
URL Rewrite、Script、MITM等代码使用,目的是实现对网络请求的精准控制与定制化处理。编辑参数所修改或填写的内容不会因为模块更新而丢失,若开启了 iCloud,其自定义参数保存在iCloud - Shadowrocket - Modules内与模块同名的*.meta文件内示例:
#!name=证书模块 #!desc=需要以编辑参数的方式启用并填写完整 #!arguments=证书模块:false, 证书内容:此处粘贴有效的证书内容, 证书密码:Shadowrocket #!arguments-desc=证书模块:启用并填写证书内容方可生效\n\n证书内容:粘贴自有效证书\n\n证书密码:若默认密码是Shadowrocket则可不动 [MITM] enable={{{证书模块}}} ca-passphrase={{{证书密码}}} ca-p12={{{证书内容}}}
在实际使用软件时如果需要切换或更换 配置文件,且原配置已开启过 HTTPS 解密,则需要对新的配置文件重新安装并信任证书,才可使解密继续生效。为免除重复安装 CA 证书,可以选择使用证书模块。证书模块是一组手动添加已生效解密证书的模块,由于模块的优先级高于配置文件,可以使解密状态不受更换配置的影响。其原理参见:模块
新建模块:
软件
配置 > 模块 > 新建模块,复制以下内容并粘贴进去保存备用:#!name=证书(名字可更改) [MITM] enable=true # 确认下方 “ca-passphrase=” 后面填写的「已安装证书的配置文件」的证书密码是否正确,默认密码是:Shadowrocket ca-passphrase=Shadowrocket # 在下方 “ca-p12=” 后面粘贴证书内容 ca-p12=点击「已安装证书的配置文件」后面的
ⓘ图标 > HTTPS 解密 > 证书后面的ⓘ图标 > 复制将复制的证书内容粘贴至第一步创建的证书模块内的
ca-p12=后面保存证书模块原本是可以省略
ca-passphrase这行参数。但由于引用的配置文件可能已经包含了证书密码,且证书密码可能不是Shadowrocket,为防止出错,因此才增加ca-passphrase参数来覆盖引用的配置文件的证书密码
Shadowrocket 安装 CA 证书时,如果遇到「输入证书
身份证书的密码」页面,可以尝试输入:Shadowrocket
Shadowrocket 支持在 配置文件 中编写本地节点,但该操作方式仅是为了兼容部分其他类型的配置文件,不能当作 Shadowrocket 添加节点 的优先选择
Shadowsocks类型
节点名称=ss,地址,端口,password=密码,其他参数(如method=aes-256-cfb,obfs=websocket,plugin=none)
Vmess类型
节点名称=vmess,地址,端口,password=密码,其他参数(如alterId=0,method=auto,obfs=websocket,tfo=1)
VLESS类型
节点名称=vless,地址,端口,password=密码,tls=true,其他参数(如obfs=websocket,peer=example.com)
HTTP/HTTPS/Socks5/Socks5 Over TLS等类型
节点名称=http,地址,端口,用户,密码 节点名称=https,地址,端口,用户,密码 节点名称=socks5,地址,端口,用户,密码 节点名称=socks5-tls,地址,端口,用户,密码,skip-common-name-verify=true
Trojan类型
节点名称=trojan,地址,端口,password=密码,其他参数(如allowInsecure=1,peer=example.com)
Hysteria类型
节点名称=hysteria,地址,端口,auth=密码,obfsParam=混淆,protocol=协议,udp=1,其他参数(如peer=example.com,alpn=h2,upmbps=100,downmbps=100)
Hysteria2类型
节点名称=hysteria2,地址,端口,auth=密码,obfsParam=混淆,udp=1,其他参数(如peer=example.com,alpn=h3)
TUIC类型
节点名称=tuic,地址,端口,password=密码,udp=1,其他参数(如user=uuid值,peer=example.com,alpn=h2)
Juicity类型
节点名称=juicity,地址,端口,password=密码,udp=1,其他参数(如user=uuid值,peer=example.com,alpn=h2)
WireGuard类型
节点名称=wireguard,地址,端口,privateKey=私钥,publicKey=公钥,ip=子网IP,udp=1,其他参数(如dns=1.1.1.1,mtu=1350,keepalive=40,reserved=1/2/3)
Snell v2 类型
节点名称=snell,地址,端口,password=密码,udp=1,其他参数(如obfs=http,obfs-host=example.com,obfs-uri=/abc)
代理日志记录了网络活动过程中 Shadowrocket 处理请求的具体信息
数据 > 代理 > 启用日志记录
产生网络活动时,返回
数据 > 代理页面查看日志文件每条记录包含信息:
- 请求 URL
- 请求匹配的规则策略
- 请求传输协议
- 请求发送时间
记录显示
MITM,表示请求域名已启用解密点击每条记录查看详情,详情页右上角
•••可以选择类型添加规则
数据 > 代理页面,右上角•••可以手动删除所有日志文件。日志文件页面,右上角•••可以选择导出
数据 > 自动删除 > 打开,程序会自动删除7天前的日志文件。Shadowrocket 已连接状态,手动删除将保留最新的日志文件,未连接时,手动删除所有
DNS 日志记录了网络活动过程中 DNS 服务器处理域名查询请求的具体信息
数据 > 代理 > DNS > 启用日志记录
产生网络活动时,返回
数据 > DNS页面查看日志文件每条记录包含信息:
- 请求域名
- 查询结果
- DNS 响应时间
- 处理请求的 DNS
旗帜是根据返回IP地址的地理位置信息自动显示
覆写 DNS不可用或未返回有效响应时,将回退至备用 DNS来查询域名
记录信息中如果响应时间超过2秒,意味着系统正在触发回退机制
Shadowrocket 支持将服务器节点、配置文件、模块和脚本文件等数据类型自动同步至 iCloud 云端
数据 > iCloud > 自动同步 > 打开
设备
设置 > 账号 > iCloud,确保使用 iCloud 的 APP 列表中已经开启 Shadowrocket 和iCloud 云盘项目,否则会出现iCloud 自动同步失败的提示同步成功时,点击
iCloud 文件可以看到存储云端的配置文件
文件app > iCloud 云盘 > Shadowrocket,可以看到存储云端的所有数据。其中的shadowrocket.v2.model文件包含服务器节点的配置信息iCloud 服务中断、网络连接问题以及其他复杂原因可能导致 iCloud 同步异常,这种情况建议选择手动删除 iCloud 备份并重新同步数据
如果用户删除首页某个节点后发现它又自动恢复,可以尝试以下解决方法:数据 > iCloud,服务器节点下面点击删除 iCloud 备份和同步服务器节点添加的
场景和分组不属于 iCloud 自动同步的数据类型,需要手动备份下载,才能在设备间共享数据
导出节点:将首页的所有节点数据整合成一个 JSON 文件,选择存储在本地或云端,也可以通过其他共享方式传输文件
导入节点:将存储在本地或云端 JSON 文件中的节点数据解析并添加到首页
删除本地节点:一键删除首页所有节点数据
统计是 Shadowrocket 开启连接后接管设备所有网络传输的流量统计信息
- 数据 > 统计
- 统计包含信息:
- 开始时间
- 连接时间
- Wi-Fi 和蜂窝数据的上下行流量
- 流量分流的柱形图统计
- 默认记录所有流量统计信息。打开
启用存档将会单独记录每一次连接的流量统计信息,关闭首页连接后可以从归档查看- 点击右上角
•••可以重置统计信息首页
订阅支持显示流量统计信息
- 方法一,订阅链接添加响应头:
subscription-userinfo: upload=xxx; download=xxx; total=xxx; expire=xxx- 方法二,在订阅链接指向的纯文本 base64 编码前添加
STATUS=xxx或REMARKS=xxx字段,这样订阅名称下方就能显示自定义信息。如果没有添加字段或者隐藏用户代理字符串,可能导致不返回相关统计信息,只显示时间
详见词条 连通性测试
设置 > 小组件
服务器节点:根据需求添加6个常用节点,点击
Today 小组件右上角的>可以展开查看,方便手动切换节点显示Ping值:启用后,长按
Today小组件中心位置可以测试服务器节点连通性并显示延迟数字根据Ping排序:启用后,长按
Today小组件中心位置可以测试服务器节点连通性并依延迟大小自动排序添加小组件方法:
Today 小组件
- 负一屏 > 编辑 > 自定 > 点击 Shadowrocket 旁边的
添加按钮➕。(系统要求低于 iOS 18)屏幕小组件
- 长按屏幕 > 左上角
➕> Shadowrocket,选择合适类型添加。(系统要求≥ iOS 17)更新 Shadowrocket 后,如果找不到小组件添加按钮,请尝试重启手机。如果小组件显示
无法加载,请尝试以下方法:
- 系统设置 > 通用 > 语言与地区,添加或删除一种其他语言
设置 > 颜色
Shadowrocket 支持自定义设置软件配色方案,可以根据个人喜好调整各个板块的颜色,并可以随时恢复默认颜色。同时支持分享和安装已有配色方案,配色案例参考 此处
配色安装方法:复制已知的配色链接,在配置页面点击
➕号粘贴安装
- 外观:支持匹配系统的自动色彩方案,以及深色、浅色模式
- 传统样式:使用传统应用样式
- 颜色:自定义设置颜色,编码为 十六进制颜色编码(Hex Color Code)
- 重设颜色:恢复默认配色
- 复制网址:复制当前配色的 URL 地址,可用以分享或保存
以下为软件配色项目的名称及其中文译名,需要注意因系统限制,部分项目不可自定义
NavigationBarColor / 导航栏背景色 NavigationBar2Color / 导航栏背景色2 NavigationBarTextColor / 导航栏文字颜色 NavigationBar2TextColor / 导航栏文字颜色2 TabBarColor / 标签栏背景色 TabBarBorderColor / 标签栏边框颜色 TabBarSelectedColor / 标签栏选中项颜色 TabBarUnselectedColor / 标签栏未选中项颜色 TableBackgroundColor / 表格背景颜色 TableCellBackgroundColor / 表格单元格背景颜色 TableCellSelectedBackgroundColor / 表格单元格选中项背景颜色 TableSeparatorColor / 表格分隔线颜色 TextFieldTextColor / 文本框文字颜色 PlaceholderColor / 占位符颜色 TextLabelTextColor / 文本标签文字颜色 DetailLabelTextColor / 详细标签文字颜色 TextLabelDeleteColor / 文本标签删除文字颜色 HeaderFooterTextColor / 页眉页脚文字颜色 SearchFieldBackgroundColor / 搜索框背景颜色 IndicatorColor / 指示器颜色 ButtonIconColor / 按钮图标颜色 ButtonNormalColor / 按钮正常状态颜色 ButtonNormal2Color / 按钮正常状态颜色2 ButtonNormal3Color / 按钮正常状态颜色3 ButtonHighlightedColor / 按钮高亮状态颜色 ButtonHighlighted2Color / 按钮高亮状态颜色2 ButtonHighlighted3Color / 按钮高亮状态颜色3 ButtonDisabledColor / 按钮禁用状态颜色 ButtonDisabled2Color / 按钮禁用状态颜色2 PingSuccessTextColor / 测试Ping成功文字颜色 PingTimeoutTextColor / 测试Ping超时文字颜色 DefaultDotColor / 默认指示点颜色 HUDBackgroundColor / 弹窗HUD背景颜色
始终开启
VPN 保持连接状态。意外断开 或者重启设备,也会自动连接
脚本 / 模块 / 解密等需求比较多时建议开启按需求连接
根据添加的
按需求规则自动切换 VPN 状态。默认规则是任意网络类型下保持连接状态,相当于始终开启按需求规则:
- 当访问列表中的
域名时,系统会向 Shadowrocket 发送请求,如果响应成功,VPN 自动连接- 网络中指定的
DNS(通常认为是网络运营商/Wi-Fi路由器提供的 DNS 服务器地址)与列表任一内容相匹配时,VPN 自动连接或断开SSIDS填写需要匹配的 Wi-Fi 名称- VPN 连接行为可以通过
网络类型 / 域名 / DNS条件触发- VPN 断开行为可以通过
网络类型 / DNS条件触发,不能通过域名条件触发- 从上到下依次匹配添加的
按需求规则添加
按需求规则后,打开按需求连接开关,规则才能生效同时打开
始终开启和按需求连接,只有始终开启选项能够生效按需求连接是系统管理行为,域名通过系统 DNS 触发开启 VPN,如果域名被解析过或者有缓存则可能不会触发,Shadowrocket 只负责按需求规则的配置,是否生效取决于系统行为
睡眠时断开
当设备进入睡眠状态,VPN 自动断开连接
Shadowrocket 响应系统发送的睡眠指令才会断开连接,有时候熄屏的系统未必处于睡眠状态
显示断开信息
- 显示 VPN 断开连接的通知信息
强制路由
如果开启,这个隧道的路由规则将优先于任何本地自定义的路由,默认是关闭状态
包括所有网络
启用后系统会通过隧道进行路由所有的网络流量,但为维持预期设备功能所必需的指定系统服务的流量除外
- 包括本地网络:如果开启,所有发送到本地网络的流量都将包含在隧道中,如 AirPlay、AirDrop 和 CarPlay 的网络连接
- 包括APNs:如果开启,苹果的 Apple Push Notification 推送通知服务(APN)的网络流量将包含在隧道中
- 包括蜂窝服务:如果开启,来自蜂窝服务的互联网可路由网络流量(VoLTE、Wi-Fi通话、IMS、MMS、视觉语音信箱等)将包含在隧道中。
设置 > 代理 > 兼容模式
HomeKit 与摄像头建立连接时,会主动将本机 IP 发送给摄像头端逆向连接。部分情况下 iOS 可能并未处理 VPN 开启时的情况,会将 VPN 的内网地址发送给摄像头,导致 RTSP 数据回包无法发回到 iOS 设备上。若当前设备与家庭中枢设备处于同一局域网下且开启代理时,如果出现无法正常使用 “家庭” 应用查看流式传输的 HomeKit 实况影像时,可以尝试开启此项以提高相应的兼容性。此处的设置是配置文件通用隐藏参数中
compatibility-mode的一种,开启该选项效果等同于 配置文件 内设置compatibility-mode=5
设置 > 代理 > 前置代理
「前置代理」表示所有流量先通过 HTTP/SOCKS5 代理转发,再根据配置规则向节点服务器发送请求
代理共享指的是将你当前配置的代理设置分享给其他设备使用。通过代理共享,你可以把自己配置好的代理服务器(如Shadowsocks、Vmess等)通过局域网或者热点网络的方式让其他设备也能够通过相同的代理设置访问互联网
在局域网条件下
- A设备:设置 > 代理 > 代理共享 > 启用共享
- B设备:系统设置 > WiFi > WiFi 名称后面的
ⓘ图标 > HTTP代理 > 手动输入Shadowrocket「代理共享」的IP和端口使用热点条件下
- A设备:开启热点
- B设备:连接热点
- 然后按照局域网条件下方法进行设置
此处需要注意下操作顺序,原理是连接设备热点后先形成局域网环境,然后按照局域网条件进行设置备注
- 当 iOS 设备开启代理共享时,或需保持该设备屏幕常亮或连接充电器,以防意外退出
- 如果配置文件开启了 HTTPS 解密,请确保其他设备已安装并信任相同的证书才能正常使用。当其他设备不需要使用解密功能时,可以在“代理共享”页面关闭「HTTPS解密」开关
- 使用代理共享时需要对应的 APP 打开系统设置中的“本地网络”开关
- Telegram 可能不被系统代理接管,可单独在应用内添加 SOCKS5 代理
Shadowrocket 代理类型:
设置 > 代理 > 代理类型
HTTP:系统代理模式,对于不支持的程序会交给 TUN 接管网络连接
None:TUN 模式,全部网络请求都将通过 TUN 接口进行处理。效果等同于 配置文件 内设置
compatibility-mode=3
设置 > UDP > 启用转发 > 打开
首页 > 订阅后面的
ⓘ图标 > UDP转发 > 打开首页 > 节点后面的
ⓘ图标 > UDP转发 > 打开
设置 > UDP > 禁用STUN > 打开
禁用 STUN(Session Traversal Utilities for NAT) 的意思是完全阻止 WebRTC 通过 STUN 服务器获取公网 IP,从而彻底杜绝 WebRTC IP 泄露的问题
若在配置文件 通用参数 中使用
stun-response-ip的相关命令,则此处的开关状态将被忽略
位置
iOS 系统要求必须开启位置权限才可以读取 Wi-Fi 网络的 SSID 名称。在 Shadowrocket 中,此权限仅在需要使用基于连接 Wi-Fi 网络触发特定配置的 场景 功能时才需要
通知
开启通知权限才可允许软件发送重要通知或警报,包括:脚本执行结果、订阅更新通知、VPN 断开通知等
剪贴板
开启剪贴板权限后,Shadowrocket 将在打开应用程序后尝试识别剪贴板中的内容是否是代理服务器的 URL,若是则会提示将其导入到应用。若未启用此权限,Shadowrocket 主页的本地节点上方将出现一个专用的粘贴按钮,以允许手动粘贴和导入剪贴板的内容
设置 > 排除路由 0.0.0.0/31 > 打开
注意:该选项是利用系统漏洞实现的,打开开关可能会导致网络异常,不推荐开启此项
设置 > GeoLite2 数据库
软件已内置常规 GeoIP 数据库,一般情况下无需设置,若有需要请参考以下设置方式
方法一
- 填写 MaxMind官网 注册的账户 ID 和密钥,点击下方的
更新按钮方法二
关注 GitHub 的 IP 数据库项目,复制 mmdb 格式的下载链接,粘贴在国家/ASN 对应的 URL 位置,点击
更新按钮。当点击重置时,可以恢复为系统自带的数据库Loyalsoldier 的 IP 数据库:
https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdbHackl0us 的 IP 数据库:
https://github.com/Hackl0us/GeoIP2-CN/raw/release/Country.mmdbMasaiki 的 IP 数据库:
https://github.com/Masaiki/GeoIP2-CN/raw/release/Country.mmdbP3TERX 的 ASN 数据库:
https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb
现阶段软件的自动更新包含配置文件自动更新、服务器订阅自动更新以及 GeoLite2 数据库自动更新。需要在
系统设置 > 通用 > 后台App刷新中为 Shadowrocket 启用后台刷新
Tip
若当前配置是远程配置,希望定期更新远程资源,且不希望自定义设置被覆盖或丢失时,可参考以下两种方法:
当使用温和策略机制时,切换策略不会打断之前与之相关的TCP连接,仅会对之后的网络请求使用新的策略进行连接
当不使用该功能机制时,切换策略会打断与该策略相关的旧有 TCP 连接,若继续使用则使用新的策略重新连接例如:打断会使旧有策略相关的连接所进行的下载任务中断
自动切换延迟低的节点:
方法一
- 首页 > 全局路由 > 分组 > 简单模式 > 打开
方法二
- 点击配置文件的
ⓘ图标 > 代理分组 > 右上角➕> 类型url-test备注
- 如果节点不稳定,可同时 开启回退
添加/更新订阅时异常的原因:
- forbidden 表示订阅被重置或令牌 token 错误
- not found 表示订阅路径或链接信息错误
- service unavailable 表示域名信息错误或域名被运营商屏蔽
- SSL 错误 表示无法建立与该服务器的安全连接
添加/更新订阅链接时,如果发生异常,可以尝试的解决方法:
- 全局路由选代理,使用另外一个节点来添加/更新订阅链接
- 切换网络后再添加/更新订阅链接
- 检查订阅链接是否错误或失效
节点优先根据备注名称匹配旗帜,如果匹配不成功,由节点地址解析出 IP,通过数据库判断该IP的国家或地区,然后显示对应的旗帜
- 节点后面的
ⓘ图标 > 地址栏的图标,可以手动修改旗帜- 订阅后面的
ⓘ图标 > 订阅界面的筛选输入框,输入相关脚本能批量修改旗帜,参考:订阅节点筛选如果把旗帜的 Emoji 放在节点备注开头,保存时会自动显示对应的旗帜,且不显示开头的 Emoji
节点显示感叹号
⚠的原因:
- 您的节点使用了 TLS,地址是 IP,却没有设 SNI
这不是正确的服务器设置,但为了可以正常连接,Shadowrocket 会主动开启
允许不安全。允许不安全将跳过TLS证书验证,这将导致一些安全问题。如果您使用自签名证书,请将证书导入系统并信任它,否则请及时续订服务器端证书,以防止证书过期。在2.2.23等特定版本中,该选项可能默认为关闭状态
如果使用 Shadowrocket 时微信一直显示
连接中/收取中,可以尝试的解决方法:
微信分流走直连
点击配置文件的
ⓘ图标 > 通用 > 启用IPv6 > 关闭本质上该问题是由于现阶段某些地区的运营商对 IPv6 的支持不够稳定,或是路由器设置不当,可能会引发微信加载异常的问题
模块页面已经开启
保存到iCloud,如果出现模块消失的问题,请检查:
系统设置 > Apple ID > iCloud > 使用iCloud的APP中,确保Shadowrocket/iCloud云盘已经打开同步
文件app > iCloud云盘 > Shadowrocket,确定其中包含
Modules和Script两个子文件夹文件app > iCloud云盘 > Shadowrocket > Modules,如果iCloud的本地缓存被清理,此时模块文件是未下载状态,请等待自动下载或手动下载
因系统版本低于
iOS 15、处理复杂请求、加解密数据、运行脚本等因素或多种因素相互作用之下可能导致 NE 内存占用过高,从而造成 VPN 自动断开,解决方法:
设置 > 按需求连接 > 始终开启 > 启用
如果在使用 Shadowrocket 的时候,遇到某些 APP 提示需关闭代理才能使用,可以在
Shadowrocket > 设置 > 代理类型 > 选择 None该设置将使用 TUN 模式 接管代理,能很大程度上缓解上述情况,但对于某些直接检测系统 VPN 状态的 APP 无效
Shadowrocket 2.2.29 之前的版本是使用 Xcode 13.2.1 编译的
2023年4月份以后,苹果官方要求开发者在提交应用到 App Store 时必须至少使用 Xcode 14 编译,所以 iOS12 以下系统无法使用
Shadowrocket 在版本
2.2.30之后设置最低安装要求 iOS12,然后停止2.2.29版本,iOS 低版本用户可以安装2.2.28版本
请使用相应内容直接替换代码中的大括号及其内容
Shadowrocket 支持
X-callback-urls,允许其他应用程序在 Shadowrocket 中触发某些操作支持添加
autoclose=true查询值,可在动作触发后退出 Shadowrocket
启动 VPN 隧道shadowrocket://connectshadowrocket://open
停止 VPN 隧道shadowrocket://disconnectshadowrocket://close
切换 VPN 开关状态shadowrocket://toggle
连通性测试shadowrocket://connectivity-test
使用特定节点shadowrocket://select?s={节点名称}
添加 订阅/节点shadowrocket://add/{url}
更新 订阅shadowrocket://update-subs
安装/使用 配置shadowrocket://config/add/{url}
安装/使用 模块shadowrocket://install?module={url}
切换全局路由(代理/配置/直连/场景)shadowrocket://route/proxyshadowrocket://route/configshadowrocket://route/directshadowrocket://route/scene
安装/使用 配色shadowrocket://color?{配色设置}