Apple 的应用信息里写到,Shadowrocket 可以显示 HTTP、HTTPS、DNS 请求记录,支持 URL rewriting、HTTPS decryption、scripts 和本地 DNS mapping。也就是说,模块出问题时,开关颜色不够用,Recent Requests 才是定位入口。
先关哪 3 个开关?
按这个顺序退回基础规则代理:
- 关闭全部 Module。
- 关闭 URL Rewrite。
- 关闭 HTTPS 解密。
- 保留
[Rule]和订阅节点。 - 重新连接,打开同一个失败网页。
如果网页恢复,问题就在模块层。不要急着删订阅,也不要重装 App;这两步会把现场信息清掉,反而更难判断是哪条规则动了请求。
default.conf 里哪些字段最容易撞车?
Shadowrocket 官方 config 仓库的 default.conf 能看到这些段落和字段:
[General]
bypass-system = true
skip-proxy = ...
bypass-tun = ...
dns-server = 114.114.114.114,119.29.29.29,8.8.8.8
[Rule]
DOMAIN-SUFFIX,example.com,Proxy,force-remote-dns
GEOIP,CN,DIRECT,no-resolve
FINAL,Proxy
[URL Rewrite]
^http://example.com https://example.com 302
DNS 问题重点看 dns-server、force-remote-dns、no-resolve。Rewrite 问题重点看 [URL Rewrite] 里的正则是否命中过宽。
如果模块来自不同作者,一个模块改 DNS,另一个模块改 rewrite,网页白屏时很容易误判成订阅不可用。此时可以先把节点订阅和功能模块分开检查;需要重新导入节点时,再使用配套订阅线路承载基础连接测试,不要把订阅问题和模块问题混在同一轮排查里。
Recent Requests 要盯什么?
打开失败网页后,马上去 Recent Requests 找同一个域名。重点看这 4 类信号:
| 看到的情况 | 指向问题 | 下一步 |
|---|---|---|
| 请求被 302 到陌生 URL | URL Rewrite 规则过宽 | 关闭该 rewrite |
| 证书提示 | HTTPS 解密作用到不该处理的域名 | 收紧解密域名 |
| DNS 请求走了异常服务器 | dns-server 或 force-remote-dns | 改回基础 DNS 测试 |
| 命中 REJECT | 模块注入了拒绝规则 | 查模块规则段 |
不要一次启用多个模块。模块之间互相覆盖时,Recent Requests 只能看到最后结果,很难知道最早改请求的是谁。
模块恢复顺序怎么排?
恢复时按从低风险到高风险:
- 只恢复纯规则模块。
- 再恢复 DNS 相关模块。
- 再恢复 URL Rewrite。
- 最后恢复 HTTPS 解密。
每开 1 个模块,都刷新同一个页面,记录 Recent Requests 的变化。如果打开某个模块后立刻白屏,问题就足够清楚:停在这个模块,不要继续叠加第二个变量。
哪些域名不要拿来测 HTTPS 解密?
登录页、支付页、系统服务、银行类 App 都不适合拿来做第一轮测试。先用一个普通 HTTPS 页面确认功能,再给具体域名加规则。
HTTPS 解密要安装和信任证书。证书链一旦出错,很多 App 会直接拒绝连接,看起来像代理故障,其实是证书校验失败。
修好后怎么确认不是偶然恢复?
用同一个域名做 2 轮确认:第一轮只开基础规则,第二轮只多开刚才定位出的模块。如果第二轮复现白屏、302 或证书提示,就能确认冲突来自该模块。
再换一个无关域名测试。只有特定域名异常,通常是 rewrite 或 HTTPS 解密范围过宽;多个域名都异常,再回头看 DNS 字段和全局规则。
相关阅读
FAQ
Shadowrocket 模块一开网页白屏先关什么?
先关 Module、URL Rewrite 和 HTTPS 解密,只保留 Rule。网页恢复后,再逐个开模块,锁定是哪条 rewrite、脚本或拒绝规则影响页面。
default.conf 里和 DNS 有关的字段有哪些?
官方 config 示例里能看到 dns-server,规则行也能带 force-remote-dns 和 no-resolve。排查 DNS 命中异常时,先看这 3 类字段。
URL Rewrite 的格式是什么?
default.conf 的 [URL Rewrite] 示例是正则、替换 URL、状态码三段,例如用 302 重定向。正则写得过宽,会把正常请求也改掉。
HTTPS 解密要一直开吗?
排错时别一直开。Apple 列表说明 Shadowrocket 支持 HTTPS decryption,但它会改证书链,建议只对明确要测试的域名启用。