本文速览

Data 用于观察 Shadowrocket 记录到的流量,不是蜂窝账单,也不能单独证明某个网站采用了哪条策略。本文面向已有自己的服务商与订阅、已经能够连接的用户,说明服务器归集与应用归集的区别,并给出“记基线、发请求、看增量、核对规则”的排查步骤。不同 Apple 平台及界面提供的归集维度可能不同,仅对当前页面实际显示的项目作判断。

1. 先区分累计流量、实时速率与计费流量

Shadowrocket 是 App Store 发行的 Apple 平台付费客户端,以 iPhone 和 iPad 为主要使用设备。产品页可核对开发者 Shadow Launch Technology Limited 与应用 ID 932747118;系统要求以 App Store 页面标注为准。Data 中的数字属于客户端观察结果,不能替代运营商或用户已有服务的计费记录。

查看某一行时,先确认名称、单位和统计范围。上传通常指设备向外发送的数据,下载通常指设备收到的数据;二者都以设备方向理解,而不是以远端服务器的方向理解。带有每秒单位的数值是速率,只有字节单位的数值是数据量。界面若未明确标注“本次连接”或时间范围,就不要自行把累计数解释成当天流量。

8 bit
等于 1 B;小写 b 与大写 B 的含义不同
B/s
每秒字节数,属于速率,不是累计数据量
443
HTTPS 常用端口;端口本身不能证明采用了 PROXY

连接空闲时,累计量仍然可能增加。后台同步、通知、DNS 查询、连接保活和重试都可能产生数据;但没有请求明细时,不能仅凭这几个数字确定是哪一项。相反,网页已经显示出来而新增下载量很小,也可能只是命中了本地缓存。

2. 按服务器读数:看出站归集,不看手机总用量

按服务器查看时,应先对应 Home 中当前使用的服务器。名称相同不一定代表同一个连接参数;重命名、切换服务器或更新已有订阅后,比较记录时还要核对地址、端口及实际选择结果。服务器维度回答的是“客户端把多少流量归到了这条出站”,不是“手机上的所有应用一共用了多少流量”。

观察对象可以得出的结论不能直接得出的结论
某服务器上传增量该统计范围内,向此出站发送的数据增加增加部分全部来自前台应用
某服务器下载增量该统计范围内,经此出站收到的数据增加增加量等于某个文件的标称大小
旧服务器仍有累计值页面仍保留该条目的历史统计当前请求仍在使用旧服务器
服务器读数没有变化观察期间该条目没有可见增量请求必然走了 DIRECT 或连接必然失效

若请求走 DIRECT,它不需要通过代理服务器转发,因此不应把某条代理服务器的读数当作直连流量的总表。另一方面,界面上的总计可能与单条服务器的范围不同;只有确认时间范围、筛选条件和重置边界一致,才适合比较或求和。

3. 按应用读数:先确认识别能力,再解释占用

应用维度与服务器维度是两种归集方式:前者尝试回答“哪个来源产生了数据”,后者回答“数据经由哪个出站”。同一个应用可以同时访问多个域名,也可能一部分请求直连、一部分请求代理,因此应用累计量不必等于某一条服务器的累计量。

尤其在 iPhone 和 iPad 上,不能把隧道可见的网络流量等同于完整的进程身份信息。如果当前 Data 界面没有应用列表,就不要寻找并不存在的通用“按应用”开关;如果显示了应用归集,也应以页面实际识别结果为限。未识别或无法明确归属的记录,不能随意分配给刚刚打开的应用。

若目的是核对某个应用是否使用蜂窝网络,应同时查看系统“设置 → 蜂窝网络”中对应应用的统计,并核对系统统计周期。系统蜂窝读数不包含同范围的 Wi-Fi 用量;Data 则要结合当时的连接状态和页面口径解释,两者不是同一张账单。

4. 判断 PROXY 或 DIRECT:先看路由姿态,再看命中结果

Data 展示结果,Global Routing 决定请求采用何种路由方式。排查规则时先到 Home → Global Routing 核对当前姿态,再到 Config 核对实际启用的配置。Proxy 与 Direct 分别对应全局代理、全局直连的基本用途;Config 按配置中的规则分流。Scene 需要结合所选场景的具体设置判断,不能仅凭名称认为它等同于 Config。

请求产生 路由姿态 规则匹配 实际出站 统计归集

下面是用于解释规则顺序的最小片段,不是完整配置。example.com 是示例域名,不能用它替代用户实际需要核对的目标;PROXY 也需要已有且可用的代理出站才能完成转发。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT

读懂规则片段

DOMAIN-SUFFIX
example.com,PROXY:匹配此域名及其子域名。
IP-CIDR
192.168.0.0/16,DIRECT,no-resolve:匹配对应地址段,不为此规则主动解析域名。
FINAL
DIRECT:前面的规则均未命中时使用直连。

规则自上而下匹配;此片段仅用于说明,修改前先保留原配置。

核对运行条件

Home → Global Routing
规则测试使用 Config,并核对是否存在场景切换。
Config
确认选中的文件就是包含测试规则的文件。
Settings → On Demand
检查自动连接条件是否会影响测试期间的隧道状态。

On Demand 处理按条件连接,不是网站采用 PROXY 或 DIRECT 的证明。

更可靠的证据是目标请求对应的规则与实际出站记录。若当前界面提供连接或请求明细,应按域名、目标地址和时间定位同一次请求,再核对命中的规则及策略。服务器计数增长只能辅助验证,因为同一时间可能还有其他请求使用这条服务器。

5. 用前后差值做一次可复核的流量测试

不必先清空所有历史统计。保留历史值并记录测试前后读数,可以避免误删参考数据,也不依赖界面是否提供重置按钮。以下流程只使用用户已有且有权访问的目标,不需要更换或新增服务。

  1. 固定环境:选定 Wi-Fi 或蜂窝网络,测试中不切换网络;暂停正在进行的大文件传输,记录 Home 当前服务器与 Global Routing 姿态。
  2. 记录基线:进入 Data,抄下目标服务器上传、下载读数及单位;若有应用维度,同时记录对应应用。等待约 30 秒,观察空闲时是否仍有明显增长。
  3. 只做一个动作:打开一个目标网页,或读取自己已有的测试文件。不要同时运行多项测试;记录开始和结束时间,留意重定向后的域名。
  4. 读取增量:等待页面统计刷新,再用结束值减去开始值。若显示精度较低,小请求可能暂时看不出变化,不要立即判定为零流量。
  5. 交叉核对:结合目标请求的命中规则、实际出站与计数增量判断。若需要改变配置,只改一个条件后重复测试,结束后恢复原设置。

6. 常见读数疑问与具体处理

网页能打开,服务器流量却不涨,是不是没走代理?

先排除页面缓存,再核对 Home → Global Routing 和 Config 中启用的规则。若实际命中 DIRECT,代理服务器没有对应增量是正常现象;若命中 PROXY,则检查是否看错服务器条目、读数是否尚未刷新,以及请求是否真的重新发出。

为什么 Data 比下载文件大小多?

先暂停其他传输,再用前后差值重测。文件标称大小只描述文件内容,而统计可能同时包含其他请求、请求头、连接维护或重试;具体计入哪一层应以页面口径为准,不能设置一个固定比例去倒推文件大小。

切换服务器后,旧服务器还有数字,需要删除吗?

先区分累计值与新增值。记下旧条目读数,等待并发出一次明确请求,再观察是否变化。只要旧值没有新增,它通常只是历史参考;不要仅为了让页面“归零”就删除已有服务器或配置。

系统蜂窝统计和 Data 差很多,按哪个算套餐?

运营商套餐用量以运营商计费记录为准。先在系统“设置 → 蜂窝网络”核对统计周期,再排除 Wi-Fi 用量、不同重置时间与后台数据。Data 适合排查客户端可见的流量分布,不负责给出套餐剩余额度。

按应用列表找不到目标应用,能直接按域名算给它吗?

不能直接这样归属。共享域名可能被多个应用使用,网页也可能加载第三方资源。先做单一应用、短时间窗口的重复测试;若界面仍无法确认来源,应保留“无法明确归属”的结论,而不是把服务器增量全部记到该应用。

7. 保存排查记录时保留口径,隐藏敏感信息

可复核的记录应包含测试时间、网络类型、Global Routing 姿态、启用的 Config、目标域名以及同一条目的前后差值。若需要向自己的服务方说明问题,再补充错误现象和实际命中策略。只有累计总数而没有时间窗口,通常无法定位单次请求。

结论应写成“在这次测试窗口内,该请求命中某条规则,并且对应出站出现了增量”,而不是“Data 有数字,所以全部流量都走了代理”。把规则证据与统计证据分开记录,才能区分路由错误、缓存影响、后台用量和统计口径差异。