排查到了 TikTok 的一种无网络问题,想看看有没有人遇到过

6 月 25 日
 MysticalDevil

最近排查了一个 TikTok 国际版「无网络」的问题,使用 Codex 进行了一轮复杂排查,最终定位到是香港代理问题,分享一下过程

环境

排查过程概述

起初怀疑过 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 条目
979 次点击
所在节点    分享发现
3 条回复
MysticalDevil
6 月 25 日
之前不知道香港地区的 Tiktok 停运了
xialaoban
6 月 25 日
HK 节点按理说早就不能打开 TikTok 才对。。
MysticalDevil
6 月 25 日
@xialaoban 之前不知道 HK 地区停运了,直到最近几天打开 tk 无网络才发现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1222656

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX