最近发现一个有意思的应用,半次元,这个应用中有很多Cosplay美图,很感兴趣便想试试能否通过抓包分析获取相应的接口,没想到自己实际上已经跳到了一个大大的深坑之中,一起来看下吧。
万里长征第一步:抓包分析
本次分析采用Fiddler和Charles皆可,若不会配置,请自行百度相关软件的使用,另外因为半次元采用的https的接口,所以这里必须要先配置CA证书,不太了解的同学可以参考:
Charles抓取https
fiddler抓包https
本文以Fiddler为例,配置完成后在Fiddler界面可以看到页面请求的https连接了,以Cos周榜为例:
如图,我们从这次post请求可以看到url,query参数,请求体body以及返回的json数据,完整url如下:
https://api.bcy.net/api/coser/topList?iid=36046028020&device_id=46019894537&ac=wifi&channel=huawei&aid=1250&app_name=banciyuan&version_code=412&version_name=4.1.2&device_platform=android&ssmix=a&device_type=BKL-AL20&device_brand=HONOR&language=zh&os_api=26&os_version=8.0.0&uuid=866953034499460&openudid=56028d53b0cb3095&manifest_version_code=20180605&resolution=1080*2160&dpi=480&update_version_code=412&_rticket=1531992443394
这里请求体body的key是data,加密内容是:
Lc59D72k2R4YFB0XMOPQRgpNKWGco6f1e86WkOur0ZArCiT+R6VlSvHQYEUtFtTVXrYpx4tE3WZV5vf043AL8XwSxskW592ULRAzrh6oEcMW9FBDzBrB+l9QIGFengtJ
因为是Post请求,这里如果直接点击打开会出现默认的提示,不会返回任何数据,所以我们可以通过Postman等工具进行请求测试,如下:
那么问题来了,data是加密的的,我们需要的是通过动态的生成data来自由根据参数获取数据,那么该怎么做呢?
万里长征第二步:反编译
为了能看到请求体中的data参数到底如何产生的,我们就需要通过反编译去分析下源码看看。
首先从官网下载半次元apk的安装包,这里地址是https://bcy.net/static/app,这里直接使用快捷方便的Android killer来完成反编译逻辑,成功反编译后如下:
很容易的我们找到了班次元的源码路径,完整内容是com.banciyuan.bcywebview,由于我们能直接看到的是sm