BiliBili Android第三方——第0步

该项目的原因稍后再写,想开发BiliBili的Android第三方客户端总会有几个必须要跨过的坎,我们第0步主要就是为了这些而做的准备。

后台服务

已经很少有App能过脱离后台服务而独立运行,即便一些单机游戏也需要通过网络加载新的游戏关卡等,而我们做第三方App也同样需要后台服务的支持(除非只是想模拟UI,而非真实的功能)。

目前第三方客户端获取后台服务主要通过两种方式:

  1. 官方发布并维护一些开放API,供个人或其他团队开发人员进行个性化的开发。目前该种方式也逐渐没落了,仅存豆瓣、QQ等为数不多的几个开放平台仍在,目前BiliBili及许多大厂基本都已经关闭了个人开发者对第三方接口的申请。可能是维护开放API的成本要远大于所带来的引流的收获,可能国内开发人员也没有那么多时间去玩别家的开放API,为了生活就已经筋疲力尽了...
  2. 通过了解官方API的验签方式,而使用规范的官方API进行调用。其实,这种方式跟捡到一张银行卡,然后猜密码差不多(不过还好没有错误限制,可以一直试下去),不过因为签名方式不像银行密码那么简单就是6位整型数,而是无限种的加密方式。不过还好,常规方式就那么几种,就好像银行密码要么123456,要么6个0一样,猜个几次就能够猜的出来。

para + 排序 + appsecret + md5 拼sign

原来key1=value1&key2=value2&key3=value3,拼装后

  1. value1value2value3
  2. key1value1key2value2key3value3
  3. key1=value1&key2=value2&key3=value3

再加上关键key,私钥:appsecret=ea85624dfcf12d7cc7b2b3a94fac1f2c

然后一起md5,得到sign,服务端验证sign是否一致,不一致的请求拦截掉,防止第三方随意调用。

工具

Charles

使用charles进行截包,分析具体按钮的请求及返回json数据

dex2jar

用于反编译apk提取jar包,查看java源代码(可能被混淆)

JD-GUI luyten

用于查看反编译后的java代码

apktool

主要用于获取资源文件,如查看布局、获得资源图片等

IDA

主要用于反汇编.so文件

工作流程

  1. 使用apktool反编译apk文件,获取资源文件
  2. 使用dex2jar反编译apk文件,获取Java代码(可能被混淆)
  3. 使用Charles截取想要重现的请求(也可以通过Log获取发送请求URL,一般会将在Log中打出网络请求)
  4. 根据分析代码,判断所需在哪个so中
  5. 猜测(猜想 + 测试),验证签名方式,并通过实际请求验证

详细内容

一、反编译apk

二、通过测试确定签名方式

  • 建立Demo项目,通过截包确定需要签名的请求

    挑选一个需要签名的请求,本例使用直播页的请求:具体URL为

      http://live.bilibili.com/AppIndex/home?_device=android&_hwid=51e96f5f2f54d5f9&_ulv=10000&access_key=563d6046f06289cbdcb472601ce5a761&appkey=c1b107428d337928&build=410000&platform=android&scale=xxhdpi&sign=fbdcfe141853f7e2c84c4d401f6a8758
    

    随便修改下参数发现返回为“api sign invalid”,证明该请求有sign验证。

  • 通过更改参数 + 猜测签名方式,请求验证,看是否被拒绝

    经验证发现,签名为上述第三种方式,将所有参数(包括变量名和值及=&符号)排序后加上appsecret(只有值)之后做md5,得到返回结果即为所求sign值


完成

至此,已经完成了真正后台服务的获取,并可以通过官方的方式进行调用,也因为APP即便发新版也需要支持旧版的运行,因此短期内不用担心官方更换secret或者更换签名的生成方式。最后,这只是完成客户端开发的第一步,也算是其中的第一个难点。UI和业务逻辑等都不能属于技术难点,本系列将着力于描述开发第三方BiliBili客户端遇到的坑,当然个人开发不可能包含整个APP的功能,因此只会逐步实现相关功能,目前仅完成直播首页(没有直播间)和新番查询两个功能,将继续利用空闲时间进行开发,并采用些新技术,用于日常工作使用前的demo开发。


Android开发新手,若有错误请指出,谢谢~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容