# ApkHistorySearch **Repository Path**: leixun/ApkHistorySearch ## Basic Information - **Project Name**: ApkHistorySearch - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2017-11-26 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 本文档使用MarkDown语法编辑,软件开发人员一般都会,你不会的话就学习吧,不到一个小时就学会了,当然,熟练的话需要经常用。 ## 项目背景 安卓的安装包都是以.apk结尾的,反编译安卓安装包可以看到相关代码,这对开发人员的学习或者破解相关资源都是很有帮助的,而针对某一款软件的最新软件进行反编译,不一定会有很好的效果,但是它的历史版本是可以的,所以这个项目就是开发一款专门搜索及抓取apk历史版本的工具 ## 项目原理 应用汇市场拥有安卓apk包搜索,及历史版本查看功能,所以我们可以用代理软件,查看这些相关的接口,并用python进行调用,最终实现自己的这款神奇工具。 ## 项目使用技术 - Git使用 - Python (版本采用2.7版本,采用Tkinter做GUI开发) - 基本的网络知识 ## 开发顺序 >任务会随着开发不断进行整理,框中有对勾为已完成,否则未完成 - [x] 环境搭建 - [x] 抓取网络接口地址 - [x] 接口分析 - [x] 学会Json库的使用 - [x] 接口调用 - [ ] 对接口进行相应的封装,方便调用 - [x] 设计UI界面 - [x] UI界面填充数据,并响应操作 - [x] 进行apk搜索,并显示版本记录及相应下载地址 - [ ] 二维码显示下载地址 - [ ] 显示各个版本的信息介绍 ##### 环境搭建 - git环境搭建 - 使用git克隆项目到本地 - python环境搭建 - PyCharm环境安装(非必须,记事本等也可以) ##### 抓取网络接口地址 使用网络代理软件观察接口 (windows环境 使用fiddler,mac环境使用Charles,涉及配置可以百度) 1. 安装fiddler 2. 手机端安装应用汇客户端 3. 手机端wifi设置手动代理为电脑ip 和 fiddler的端口,默认端口应该为:哈哈忘了,自己查吧 4. 使用https的可能需要安装证书 5. 点击应用汇app观察代理上是否有应用汇数据请求 ##### 接口分析 1. 搜索接口 2. 找旧版接口 通过搜索接口找到具体app的id,然后通过这个id组装找旧版接口的请求参数,即可获取到app的历史版本信息列表,其中就包括下载地址 接口地址都是https://mobile.appchina.com/market/api,通过上传的参数决定调用什么接口 - 搜索接口上传参数(返回数据 见文件app.list.search.json) |参数|值 ---------|---- deviceId|设备Id随便写整数即可 referer|06b15137-908f-4f51-b035-e296d5fda1b6 api|market.MarketAPI param|见文件app.list.search.json - app找旧版接口(返回数据见 app.pastdetails.json文件) > 其它参数跟搜索接口一样 |参数|值 ----|--- param|{"apiVer":23,"guid":"06b15137-908f-4f51-b035-e296d5fda1b6","imei":"869394021134371","type":"app.pastdetails","id":5341338,"packagename":"com.miui.video","start":0,"size":100,"clientTime":1511663556932,"imglevel":3,"gpuType":4,"clientVersionCode":30061345,"channel":"ac.ex.360"} //其中的id为搜索接口返回的id ##### 接口调用 用提取好的接口尝试调用,看是否可以返回需要的数据(其数据格式是Json格式) ## 使用方法 1. 安装相应的Python module 2. 命令行输入(日志在终端显示):python apk_history_search.py 后台运行输入(日志在本地文件显示):nohup python apk_history_search.py & ![软件运行效果图](https://gitee.com/uploads/images/2018/0207/175514_94c62279_1007803.png "apk_history_gui.png")