电信阿里鱼卡 UC 免流原理

上个月和电信客服扯皮两周多终于把手机套餐改成了阿里鱼卡套餐。
从 59RMB (500MB+100分钟通话) 的高端套餐改成了 19RMB(1GB+100分钟+日租+阿里文娱应用免流) 低端套餐。
实在要吐槽一下电信改套餐的规定。改套餐明明一个电话或者App戳戳就能搞定事情,偏偏让你回归属地营业厅跑一趟。虽然最后手持身份证拍照异地受理了但体验实在是不好。

鱼卡UC浏览器免流大体实现是这样的

抓包

Wireshark抓包
注意这段 Proxy-Authorization: 1|15120022766*******|com.ucweb.iphone.lowversion|ca5fe4b11712e10ba745c2817*******
关于 Proxy-Authorization 见 https://developer.mozilla.org
即UC浏览器的请求都经过代理服务器。
对比几次请求可以发现 1|UID|UA|Key 这几段猜测规律

  • 1 不变
  • UID 标示用户ID
  • UA 浏览器UA
  • Key 由网站Host计算,应该是md5

反编译

反编译 Android 客户端,基本验证各字段的意义
UC浏览器拼接Proxy-Authorization

而 bcX 和 bcW 的获取过程断点获得调用栈如下

在浏览器激活免流的时候会获取相关字段(不清楚是否会定时更新)
请求 https://freeflow.uc.cn/freeflow/generatePhoneToken 获取一段密文,解密之后解析赋值给 bcX bcW
当开始网络请求时由对应 UID|Key|Host 计算 md5

获取Host

计算MD5

拼接Proxy-Authorization

密文解密之后的结构体

上面需要的 UID UA KEY Server Port都在里面

所以

SSL Pinning 还是必须的。

目录

  1. 1. 抓包
  2. 2. 反编译
  3. 3. 所以