前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Mitmproxy分析接口

使用Mitmproxy分析接口

作者头像
LA0WAN9
发布2021-12-14 08:42:44
6610
发布2021-12-14 08:42:44
举报
文章被收录于专栏:火丁笔记

对于服务端开发者来说,通过抓包分析接口是必备技能之一,常见工具有 CharlesFiddler 等等,不过 Charles 是收费的,Fiddler 虽然是免费的,但是其 Mac 版还不稳定,本文使用另一个工具:Mitmproxy

Mitmproxy 的安装没什么好说的,按照官方文档来就行了,不过需要注意的是,为了能够抓取 Https 请求,还需要安装证书:首先启动 Mitmproxy,然后在手机 WIFI 里设置好代理,最后在手机里浏览 mitm.it 域名,按照提示完成证书安装。

BTW:有的 Android 手机不允许你在线安装证书,比如我的小米手机就是如此,其实当你安装好 mitmproxy 的时候,在 ~/.mitmproxy 目录里就已经生成了证书文件(比如:mitmproxy-ca-cert.pem),把它拷贝到手机里,通过类似「设置 -> 安全 -> 从存储设备安装」来手动安装即可。

下面以汽车之家的应用为例,看看如何通过分析得到品牌车系车型数据:

Brand
Brand

Brand

开启 Mitmproxy,手机 WIFI 配置好代理,打开 APP,就可以抓了:

Autohome
Autohome

Autohome

结果中能看到多次针对 119.29.29.29 的调用,实际上它是 DNSPod 提供的 HttpDNS 服务器,说白了就是通过 Http 的方式来提供 DNS 服务,主要是为了高可用和防劫持。当请求品牌页的时候,截获对应的接口地址是(IP 实际由 HttpDNS 分配):

https://61.240.128.76/comm_v1.0.0/ashx/brand-pm1-ts636195739525494900.json

如果直接把地址拷贝出来访问会发现无效,具体看看请求:

Brand Request
Brand Request

Brand Request

发现传递了「Host: comm.app.autohome.com.cn」,改成域名访问:

https://comm.app.autohome.com.cn/comm_v1.0.0/ashx/brand-pm1-ts636195739525494900.json

终于出结果了,但是品牌列表却是空的,看看具体响应:

Brand Response
Brand Response

Brand Response

因为看上去请求里的 ts 参数和响应里的 timestamp 结果数值是一样了,所以猜测汽车之家在这里自己实现了一套类似 304 Not Modified 的逻辑(不明白为什么不直接使用 HTTP 现成的机制),于是我调低了 ts 参数的值,再次请求,终于有结果了:

API
API

API

如此我们就拿到了汽车之家完整的品牌数据,照猫画虎也拿到了车系和车型的数据,以我的最爱丰田普拉多为例,其在汽车之家对应的车系车型接口分别是:

  • /comm_v1.0.0/ashx/series-pm2-b3-t8.json
  • /comm_v1.0.0/ashx/spec-pm2-ss46-t8.json

本文的实验结果是以汽车之家 7.7.0 版本为准,以后如果汽车之家改版,有可能会有变化,但是只要你熟悉了文中使用的方法,不管怎么变,我们都能做到万变不离其宗。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
移动解析 HTTPDNS
移动解析 HTTPDNS 基于 HTTP 协议向腾讯云的 DNS 服务器发送域名解析请求,替代了基于 DNS 协议向运营商 Local DNS 发起解析请求的传统方式,可以避免 Local DNS 造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档