Bilibili Android客户端播放API数据包解析
前言
博客也很久没水了,从日更周更到N月更,不知道写一些什么好…
这次是Bilibili客户端播放API的一个加解密算法,也折腾了我一段时间,
东西写好很久了,一直懒就没写…
BiliBili
如果研究的朋友,可能都抓过包看过数据包的情况
如图所示,播放计数的API,以及请求头、请求体、返回值
API:
https://api.bilibili.com/x/report/click/android2
请求头的数据还是比较正常,但是看到请求体部分,瞬间懵圈了
是一片乱码字符串,看了整个播放过程的API,只有这个是加密乱码的
如果不是某段时间出现的代码,我也不知道这个是什么算法。
加解密必要秘钥等
NAME | VALUE | TYPE | DESCRIBE |
---|---|---|---|
AES_KEY | fd6b639dbcff0c2a1b03b389ec763c4b | string | null |
AES_IV | 77b07a672d57d64c | string | null |
SHA256_SALT | 9cafa6466a028bfb | string | null |
这只适用于安卓客户端,和ios客户端等是不通用的
解密
解密,主要是为了解出请求参数有些什么,就不贴太多代码在博客上了
解密过程主要就是一个AES解密,暂时用不到Sha256 salt
图中红框内黑色部分数据就是加密的请求体,下面我们来解密参数
黑色部分数据Copy as Base64
(因为我的解密代码是基于Base64的)
拆分出来的一部分加解密代码放到了Github
哔哩哔哩-App客户端播放参数加解密
解密部分我就不多说了,秘钥等都贴出来了,能折腾的就慢慢折腾
我就直接直接贴出解出来的参数,参数比较多
这是登陆后的播放参数
NAME | VALUE | DESCRIBE |
---|---|---|
access_key | f3ae492*****0c51 | null |
aid | 123456 | null |
auto_play | 0 | 可为0-2 |
cid | 654321 | null |
did | BT******4a | 和设备相关 |
epid | 0 | null |
ftime | 1558340481 | null |
lv | 4 | null |
mid | 1234 | null |
part | 1 | 分P |
sid | 0 | null |
stime | 1558416933 | null |
sub_type | 0 | null |
type | 3 | null |
sign | 22bb3******cdb01b9 | sha256加密 |
这是不登陆的播放参数
NAME | VALUE | DESCRIBE |
---|---|---|
aid | 123456 | null |
cid | 654321 | null |
did | BT****4a | 和设备相关 |
ftime | 1558416933 | null |
lv | 0 | null |
mid | null | 值为空 |
part | 1 | 分P |
stime | 1558416933 | null |
设备、版本不同可能存在参数差异
加密
大概的加密过程
AES加密( 参数排序(para) + Sha256Hash+salt加密(sign) )
我就贴一下一部分代码,知道怎么用就好了
1 | data = { |
代码环境Python3,参数随便写的,还是得按照你自己的解密参数来
贴出来的代码只是一部分,基于github上的代码
SHA256 HASH SALT
1 | def hashlib_sha256(data, salt='9cafa6466a028bfb'): |
AES ENC DEC
AES的就不贴了,有点长,可以自己去看
总结
文章写的比较乱不全,只会贴出加解密部分,剩下的东西自己分析了
该文章代码只为学习,麻烦未经允许禁止转载哦
最后再贴一遍仓库地址 哔哩哔哩-App客户端播放参数加解密
靠别人写全部代码,不太可能,大家都是鸽子,咕咕咕!
END.
- 标题: Bilibili Android客户端播放API数据包解析
- 作者: Lkeme
- 创建于 : 2019-06-11 15:52:14
- 更新于 : 2024-05-15 18:51:35
- 链接: https://mudew.com/2019/06/11/Bilibili-Android客户端播放数据包解析/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。