最近排查了一个 TikTok 国际版「无网络」的问题,使用 Codex 进行了一轮复杂排查,最终定位到是香港代理问题,分享一下过程 环境
设备:Pixel 7 Pro ,KernelSU ROOT SIM:giffgaff 代理:路由器上的 OpenClash ,出口节点 香港 TikTok 版本:45.7.3 ( Google Play )
排查过程概述 起初怀疑过 DNS 、TLS 证书、代理规则、SIM 卡 MCC/MNC , 甚至尝试过 DeviceSpoofLab 、清空应用数据、重装 TikTok——全都不行 清空数据后重启 TikTok ,问题立即复现, 说明不是残留状态,而是每次启动都会重新触发 使用 Codex 辅助排查后,发现 logcat 的异常非常一致: ERR_TTNET_TRAFFIC_CONTROL_DROP InternalErrorCode=-555 dns=-1, connect=-1, ssl=-1
所有请求在 DNS 之前就被丢弃了 进一步通过 jadx/baksmali 分析 TTNet 字节码,确认了 -555 是 TikTok 应用内网络栈 TTNet 的本地 traffic-control drop 然后在设备本地缓存里找到了元凶: { "rule_id": 3011076, "action": "tc", "param": { "host_group": ["*"], "contain_group": ["/"], "drop": 1, "possibility": 100, "service_name": "drop flow" } }
一条通配所有 host 、所有 path 、100% 丢弃的规则 根因:香港代理 3011076 是 TikTok 服务端 TNC 下发的 dispatch rule ID 触发条件是:TikTok 请求经由香港代理出口时, 请求参数携带 carrier_region=HK / carrier_region_v2=454, 而此时 SIM 的 mcc_mnc=46011(中国移动网络), TNC 服务端检测到区域不匹配,就会下发这条全量丢弃规则。 所以清空应用数据也会立即复现—— 因为代理仍然是香港出口, TikTok 冷启动后会重新向 TNC 拉取配置, 规则会再次被下发并缓存到本地 手动修复 删除本地缓存中的该规则即可恢复:
文件路径(以 com.zhiliaoapp.musically 为例)
/data/data/com.zhiliaoapp.musically/files/server.json
删除 rule_id=3011076 的完整 JSON object
/data/data/com.zhiliaoapp.musically/files/tt_net_config.config # 删除 3011076 条目