前言

该项目仿照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
原文链接:https://github.com/TeamNB/FakeBiliBili

欢迎关注我的微信公众号「码农突围」,分享Python、Java、大数据、机器学习、人工智能等技术,关注码农技术提升•职场突围•思维跃迁,20万+码农成长充电第一站,陪有梦想的你一起成长。

bilibili解析接口_仿最新BiliBili客户端(已开源)相关推荐

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

    前言 该项目仿照B站的Android客户端进行开发,初衷是想学习流行的Android技术,但是没有数据资源.因为喜欢逛B站,而且B站的Android客户端又是Google推荐的MD设计规范,于是花了些 ...

  2. 仿最新BiliBili客户端开源带后台弹幕库版

    演示地址:https://www.iooyun.com/vod/play/id/118821/sid/1/nid/1/ 修复部分bug 添加右键画中画 说说怎么搭建的吧 直接上传,然后访问域名/v/d ...

  3. 用HTML+CSS简单仿制了一个bilibili电脑界面⚆_⚆(做着玩的)

    ** 效果图 **:两边的的标签是因为长截图滑动时,它会跟着一起动,实际并没有那么长(⑉・̆-・̆⑉),截图对跟着跑的东西默认截图成这样,这页面里没有js和轮播,本身想加上去,还是太懒了- 下面上代码 ...

  4. 淘口令解析api接口_淘口令解析API免费接口,淘口令解析API连接器接口付费定制-进制数据...

    淘口令解析 接口地址:http://route.showapi.com/1713-1 (注意:接口支持https,更安全,但稍慢一些,你懂的.请根据自己的情况进行选择.) 支持格式:json 请求方法 ...

  5. 哔哩哔哩bilibili 部分接口

    哔哩哔哩bilibili 部分接口API bilibili网站API 获取动态 参数 响应示例 bilibili网站API 获取动态 GET https://api.vc.bilibili.com/d ...

  6. mysql api接口_【MySQL学生手册】MySQL客户端接口

    章节概述 本章将介绍MySQL所使用的客户端客户端接口.在章节中,你将了解: MySQL所提供的客户端接口程序 在客户端接口进行区分并选择所需的接口 在MySQL网站上下载MySQL客户端接口程序 M ...

  7. 2021最新分享苹果cms10资讯采集接口,无广告超清通用解析接口

    2021分享苹果cms资讯采集接口,无广告超清通用解析接口 资讯接口:https://dy.omiys.com/api.php/provide/art/?ac=list 演示地址:1.omiys.co ...

  8. 【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)

    [游戏客户端与服务器面试题干货]-- 2022年度最新游戏客户端面试干货(lua篇) 文章目录 一.Lua的8种数据类型 (1) nil 类型 (2) boolean类型 (3) number类型 1 ...

  9. 外贸软件_仿神卓外贸管理软件强大的邮件群发功能(不被退信的实现方法)

    外贸软件市场中,神卓外贸管理软件肯定是一款优秀的外贸业务流程管理软件,用户数众多,最牛的功能是邮件群发功能,今天要说的是邮件群发,常规的企业邮件一天中一般发送不会超过70封邮件,多了就有可能会被退信, ...

最新文章

  1. SAP修改消息内容和报错类型(SE91和OBA5)
  2. AOS V0.8 发布,JavaEE 应用基础平台
  3. linuxPci驱动获取指定设备bus、device以及devfn数据方式
  4. 俄罗斯调查PC厂商合谋操纵市场 联想被指妨碍调查
  5. 如何用python删除异常值_Python机器学习:异常值查找和处理
  6. 解决url中特殊字符截断参数的问题
  7. Atitit 软件知识点分类体系 分类 按照书籍的分类 学科分类 体系与基础部分 计算机体系结构 硬件接口技术(usb,agp,pci,div,hdmi) os操作系统 中间件 语言部分
  8. mysql 测试数据生成器_ApexSQL Generate(SQL测试数据生成器)
  9. 20151210编译高通的qca9531的wireless版本 修改版本4
  10. android渠道包作用,Android多渠道打包的作用及简单使用
  11. 宽搜入门代码模板详解 HDOJ1253
  12. 《烟花》个人深度解读
  13. 阿里云Ubuton开MCJava服务器_每小时不到1元,弹性计算服务按流量缴费
  14. 基于Python的蒙特卡罗方法估计Pi值的实现
  15. 对于同源与非同源的理解
  16. 【控制工程】自动控制原理和系统建模
  17. java什么是适配器类?作用是什么?_软件设计模式之适配器模式(JAVA)
  18. 2019_ACL_Multimodal Transformer for Unaligned Multimodal Language Sequences
  19. 如何在Adobe Reader中存储阅读的Session
  20. Mongodb常用查询语句_笔记

热门文章

  1. LeetCode Rearrange String k Distance Apart
  2. HDU3591找零,背包
  3. undefined reference to '__android_log_print'解决方案
  4. PKU 3667 HDOJ 3667 Hotel ACM 3667 IN HDU
  5. Intel微处理器列表_百度百科
  6. NUC1157 To the Max【最大子段和+DP】
  7. AOJ0558 Cheese【BFS】
  8. POJ NOI MATH-7833 幂的末尾
  9. ubuntu 源、codename 与 sources.list 文件
  10. linux 代码行数统计利器 ——cloc