美文网首页安卓android框架搭建android开发
仿B站Android客户端系列(启动篇)

仿B站Android客户端系列(启动篇)

作者: Misery_Dx | 来源:发表于2017-07-25 18:01 被阅读1050次

    本篇文章为仿B站Android客户端项目开发记录系列的启动文章,该系列旨在记录项目开发的过程,记录与大家分享。

    项目地址:FakeBiliBili

    如能给github赏个star,感激不尽!

    前言

    该项目仿照B站的Android客户端进行开发,初衷是想学习流行的Android技术,但是没有数据资源。因为喜欢逛B站,而且B站的Android客户端又是Google推荐的MD设计规范,于是花了些时间研究B站的网络请求,最后成功搞定,与@Android_ZzT同学达成一致,合作开发这个模仿B站的练习项目。

    该项目在工作之余开发,所以更新时间不定。

    前期准备

    一、B站网络请求抓包

    首先是对B站的网络请求进行抓包,环境是mac,开始尝试使用Charles,由于B站的网络请求大多为Https,Charles的证书设置总是不成功(没找到正确的打开方式),无法抓到Https的包,就放弃了。

    这里推荐mitmproxy,是一款在github上托管的开源抓包工具。

    官网地址:http://mitmproxy.org/

    github地址:https://github.com/mitmproxy/mitmproxy

    教程:使用mitmproxy进行移动端的HTTP抓包

    Tips:Https抓包需要安装证书,大部分手机按照官方文档或是教程文章都可以成功安装,但是小米手机无法正常下载,官方文档中提到证书会放在~/.mitmproxy目录下,所以可以手动传到手机中进行安装。

    在设置好证书和代理之后,我们就可以开始进行https抓包了,先打开app首页

    观察mitmproxy并找到对应网络请求

    这样就可以分析分析接口参数调用B站api了。但是我们发现大部分的接口都需要一个sign参数作为动态的检验口令,而sign又是如何生成的呢,接下来我们需要反编译,寻找与分析源代码中的sign签名逻辑。

    二、反编译

    反编译与签名逻辑参考了@HaKu

    BiliBili Android第三方——第0步

    大致操作这篇讲的很详尽了,就不赘述了,这里提一些遇到的问题吧。

    • 上述文章反编译的版本比较老(文章作者后续也没有更新),老版本中SecretKey直接存放在了so库中,在反编译新版本的时候(我当时用的v5.4),B站对于SecretKey使用了AES加密,在反编译源码中可以找到算法模式,秘钥以及偏移量等参数(具体为bl包下的chd、chb类,和nativelibrary包下的LibBili类),但是经过试验没有成功......这方面了解非常少,如果有大佬能试验成功,请不吝赐教!最后还是找了老版本中的AppKey和AppSecretKey,都存储在libbili.so中,具体版本号为v3.14。

    初步成果

    截止到发文为止,首页的UI基本完成,这里发几张效果图!

    学习Android2年了一直没有写过技术文章,很是惭愧,这里多谢@Android_ZzT同学的建议,这篇启动文章就当开个头,以后要勤奋一些了。

    项目地址:FakeBiliBili

    如能给github赏个star,感激不尽!

    相关文章

      网友评论

      • 副业小侦探:没有网络的时候,程序crash,希望改进
        Misery_Dx:@Abby代黎明 已修复
      • 恨自己不能小清新:大佬 运行闪退
        有编译好的APP吗
        :flushed:
        恨自己不能小清新:@Misery_Dx 这个类BiliLoadFailedBinder的布局文件common_item_load_failed缺少一个id为iv_load_failed的ImageView
        Misery_Dx:恩,我之后会打包一个apk放到项目目录下
        Misery_Dx:可以发下log看看问题吗,手头测试机有限,并没有做太多测试

      本文标题:仿B站Android客户端系列(启动篇)

      本文链接:https://www.haomeiwen.com/subject/boowkxtx.html