仿最新BiliBili客户端(已开源)

前言

该项目仿照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。

成果

效果图如下:

推荐

追番

追番

推荐

分区

播放

加载数据

Version 1.1.0

  • 架构搭建
  • 分析 Api
  • 完成主页界面

Version 1.2.0

  • 完成直播播放页面
  • 集成IjkPlayer并简易封装
  • 集成DanmakuFlameMaster和来自czp3009的bilibili-api完成弹幕功能

一些开源库的更新

  • 前期准备
  • 反编译资源文件
  • mitmproxy抓取 Api(支持https)
  • 获得 B 站 signKey 签名逻辑
  • 框架搭建

用到的开源库

  • RxJava2 最coooooool的响应式编程框架
  • RxLifecycle 解决Rxjava内存泄漏
  • Retrofit 最流行的Android网络请求的框架
  • Okhttp3 和Retrofit搭配,项目中签名逻辑使用该库的拦截器模块实现
  • Dagger2 门槛略高但功能强大的依赖注入框架
  • Butterknife 绑定View的依赖注入框架
  • Eventbus 组件间通信
  • Fresco 图片的加载和处理,功能强大,但相比其他图片库有点大
  • Fragmentation 简化Fragment操作并填坑的库
  • Multitype RecyclerView多类型库
  • IjkPlayer b站出品基于FFmpeg的开源视频播放框架
  • DanmakuFlameMaster 烈焰弹幕使-b站开源弹幕解析绘制引擎项目

原创作者:Misery_Dx

原文发布于微信公众号 - 何俊林(DriodDeveloper)

原文发表时间:2018-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菜鸟程序员

色情网站的光棍节“福利”:加密式挂马玩转流氓推广

3392
来自专栏西枫里博客

百度熊掌号折腾手记

熊掌号出来有一段时间了,西枫里博客早早的就申请好了熊掌号。久久没有启用,放置了一段时间后,第一次启用熊掌号,发现博客程序中对缩略图定义的尺寸不符合要求,另外考虑...

1632
来自专栏黑白安全

iOS ZipperDown 漏洞来袭,我们该如何应对?

昨天傍晚盘古实验室负责任的披露了针对 iOS 应用的 ZipperDown 漏洞,并提供了检索、查询受影响应用的平台: zipperdown.com。基于目前公...

732
来自专栏FreeBuf

你的终端是安全的吗?iTerm2 中可能通过 DNS 请求泄漏隐私信息

Mac 上的开发者可能非常熟悉 iTerm2 这款终端应用程序,甚至已经用它取代了 Apple 官方终端应用的地位。但就在今天之前,iTerm2中还存在一个严重...

2935
来自专栏FreeBuf

利用HTC One漏洞破解手机PIN密码

HTC One手机运行的是Android 4.2.2、HBOOT 1.54.0000,它存在一个名为Bootloader的漏洞。这个漏洞早在2014年2月份就报...

2845
来自专栏ThoughtWorks

Kubernetes救援 - 教你如何从新技术的坑里爬出来(下) | TW洞见

今日洞见 文章作者/配图来自ThoughtWorks:佟达。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站...

3818
来自专栏魏艾斯博客www.vpsss.net

WordPress 百度熊掌号自动推送插件安装使用教程

百度熊掌号是百度推出的新平台,把你网站的原创内容在最短时间内展现到百度搜索结果中,有助于提高百度搜索排名和权重,也就提高了网站流量。按照百度要求,接入百度熊掌号...

4632
来自专栏FreeBuf

色情网站的光棍节“福利”:加密式挂马玩转流氓推广

双十一前夜,还想着通过同城交友或是某些不可描述的网站一解单身的烦恼?别急,不妨先来看看这些网站给光棍发的“福利”! 最近,360安全中心监测到一起网站弹窗广告挂...

2668
来自专栏玄魂工作室

Hacker基础之工具篇 apktool

apktool ? apktool是一个用于第三方封闭的二进制Android应用程序逆向工程工具 它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们;...

41710
来自专栏ThoughtWorks

在线系统数据服务的迁移策略

成都办公室的张耀丹是去年毕业的,只是他的职业生涯一开始就面对一个复杂的遗留系统。好在遗留系统的复杂并没有让他退却,而是从中学习到了解决遗留系统的思考之道。 他写...

3547

扫码关注云+社区

领取腾讯云代金券