SIM 卡国家码与地区识别的关系
本篇讲清一件事:很多应用的「地区限制」到底在读什么。读完你会知道,为什么换代理没用、拔卡才有效——以及不拔卡的替代路径。配套的完整说明见 Nrfr 介绍站。
一个反直觉的现象
开着代理、账号也是海外区的,应用却照样提示网络错误——这类问题里,相当一部分卡点根本不在网络,而在 SIM 卡。
安卓应用想判断「用户在哪个地区」,有一条成本极低的路径:读取 SIM 卡的国家码。这个值由系统从运营商配置里取,反映的是「你插的是哪里的卡」,而不是「你此刻在哪里」。于是:
- 插着国内卡,哪怕流量全走代理,应用读到的国家码依旧是 CN;
- 部分对地区敏感的应用一看到不支持的码,直接在启动阶段就拦下来;
- 用户端表现为「网络错误」「暂不支持当前地区」,怎么换节点都不见效。
国家码从哪来
SIM 卡里带着运营商相关的配置信息,系统开机后按卡槽加载:
- 国家码(MCC):移动国家码,三位数字,直接对应地区——460 是中国,310 是美国,440 是日本;
- 运营商代号与名称:MNC 网络码加运营商名,决定系统把它认成哪家运营商;
- 双卡设备:两张卡各自有一套配置,互不干扰。
系统把这些配置整合成「这张卡是什么身份」的结论,应用通过系统接口就能查到。整个过程不需要任何特殊权限,正因如此,才成了应用判断地区的首选依据。
为什么拔卡有效、拔卡又麻烦
理解了读取逻辑,「拔卡能解决」就不神秘了:卡一拔,系统读不到国家码,应用退而求其次去看别的信号(IP、账号地区),代理链路才能发挥作用。
但拔卡的代价很实际:双卡用户要腾卡槽、重启;单卡用户等于临时失联;带 eSIM 的机型操作更是绕。所以社区里才流行起软件层面的替代思路——不改卡,只改系统读卡时用的那份配置,让系统把 CN 读成想要的码,应用看到的就是改过的结果。
这条路怎么走通、需要什么权限,见 Shizuku无线调试配对与授权步骤.md;具体到 Nrfr 这个工具的做法,整理在 免Root修改运营商配置的思路.md。