电信阿里鱼卡 UC 免流原理
date
‣
slug
china-telecom-ali-free-flow
status
Published
tags
Android
summary
上个月和电信客服扯皮两周多终于把手机套餐改成了阿里鱼卡套餐。
从 59RMB (500MB+100分钟通话) 的高端套餐改成了 19RMB(1GB+100分钟+日租+阿里文娱应用免流) 低端套餐。
实在要吐槽一下电信改套餐的规定。改套餐明明一个电话或者App戳戳就能搞定事情,偏偏让你回归属地营业厅跑一趟。虽然最后手持身份证拍照异地受理了但体验实在是不好。
鱼卡UC浏览器免流大体实现是这样的
type
Post
上个月和电信客服扯皮两周多终于把手机套餐改成了阿里鱼卡套餐。
从 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 还是必须的。