使用Mitmproxy分析接口
对于服务端开发者来说,通过抓包分析接口是必备技能之一,常见工具有 Charles 和 Fiddler 等等,不过 Charles 是收费的,Fiddler 虽然是免费的,但是其 Mac 版还不稳定,本文使用另一个工具:Mitmproxy。
Mitmproxy 的安装没什么好说的,按照官方文档来就行了,不过需要注意的是,为了能够抓取 Https 请求,还需要安装证书:首先启动 Mitmproxy,然后在手机 WIFI 里设置好代理,最后在手机里浏览 mitm.it 域名,按照提示完成证书安装。
下面以汽车之家的应用为例,看看如何通过分析得到品牌车系车型数据:
开启 Mitmproxy,手机 WIFI 配置好代理,打开 APP,就可以抓了:
结果中能看到多次针对 119.29.29.29 的调用,实际上它是 DNSPod 提供的 HttpDNS 服务器,说白了就是通过 Http 的方式来提供 DNS 服务,主要是为了高可用和防劫持。当请求品牌页的时候,截获对应的接口地址是(IP 实际由 HttpDNS 分配):
https://61.240.128.76/comm_v1.0.0/ashx/brand-pm1-ts636195739525494900.json
如果直接把地址拷贝出来访问会发现无效,具体看看请求:
发现传递了「Host: comm.app.autohome.com.cn」,改成域名访问:
https://comm.app.autohome.com.cn/comm_v1.0.0/ashx/brand-pm1-ts636195739525494900.json
终于出结果了,但是品牌列表却是空的,看看具体响应:
因为看上去请求里的 ts 参数和响应里的 timestamp 结果数值是一样了,所以猜测汽车之家在这里自己实现了一套类似 304 Not Modified 的逻辑(不明白为什么不直接使用 HTTP 现成的机制),于是我调低了 ts 参数的值,再次请求,终于有结果了:
如此我们就拿到了汽车之家完整的品牌数据,照猫画虎也拿到了车系和车型的数据,以我的最爱丰田普拉多为例,其在汽车之家对应的车系车型接口分别是:
/comm_v1.0.0/ashx/series-pm2-b3-t8.json
/comm_v1.0.0/ashx/spec-pm2-ss46-t8.json
本文的实验结果是以汽车之家 7.7.0 版本为准,以后如果汽车之家改版,有可能会有变化,但是只要你熟悉了文中使用的方法,不管怎么变,我们都能做到万变不离其宗。
建议继续学习:
- Paypal接口详细代码(PHP版,非API接口) (阅读:18430)
- 面向“接口”编程和面向“实现”编程 (阅读:12635)
- PHP连贯接口 (阅读:6438)
- 存储基础知识之——硬盘接口简述 (阅读:6264)
- JavaScript Interface 接口的实现 (阅读:5890)
- 干嘛不去掉“I”和“Impl”? (阅读:5749)
- 接口设计规则一:让你的接口会说话 (阅读:3590)
- 以用户为中心的 API 异常设计 (阅读:2466)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:老王 来源: 火丁笔记
- 标签: mitmproxy 接口
- 发布时间:2017-02-06 22:55:51
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [65] android 开发入门
- [65] 如何拿下简短的域名
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则