iOS抓包文档 - MiEcosystem/miot-plugin-sdk GitHub Wiki
背景
SDK中的接口大部分都涉及到网络请求,开发者在使用SDK时难免会遇到一些问题。为了加强开发者的问题自排查能力,以及在提工单时能给我们提供更直接有效的信息,需要教会开发者如何抓包米家APP的网络请求。
教程
工具:Charles:https://www.charlesproxy.com/
此次教程以iPhone 7为例进行教学,iOS版本为13.3,本地操作系统为Mac
抓包前确保手机和电脑处于同一局域网下
1、下载证书
打开Charles,下载证书有两种方式
一、浏览器下载证书
此方式在Mac系统下成功率较高,Windows系统下可能出现无法下载的情况,此时建议使用方案二
1、首先打开Charles,Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser
会弹出如下窗口
2、设置手机HTTP代理,主机名填上图中的ip部分10.224.206.77,端口也是,此处填8888
3、设置好后随便进行一次网络请求,Charles会弹出提示框,点击Allow
4、打开Safari浏览器,输入地址: chls.pro/ssl,在弹窗中点击允许,下载证书
二、电脑传输证书
使用Mac的 隔空投送 传递证书给iPhone
1、下载证书到Mac本地, 打开Charles,Help->SSL Proxying->Save Charles Root Certificate...
2、打开Mac和iPhone的隔空投送,将下载到Mac本地的证书传递给iPhone
2、信任证书
在iOS在系统版本高于10的机型上,需要在 设置->通用->关于本机->证书信任设置 中信任证书
首先安装证书,在设置->通用->描述文件与设备管理 中
信任证书,找到设置->通用->关于本机->证书信任设置 打开证书的开关,点击继续即可
3、打开抓包开关
经过上述步骤就已经可以在Charles上看到米家APP传输的数据了,不过是APP加密后的数据,要看到明文数据还得在APP中打开抓包模式。
iOS米家APP抓包需要在http://d.7short.com/mijiadevelopment (密码:keliyuan)下载DB包,登录开发者账号,在“我的”->“开发者选项”->“开发者模式”->“其他设置”中打开“是否开启抓包模式”即可。
打开开关后在某些情况下可能还是无法看到明文数据,退出APP重进一次即可。
米家APP的所有网络请求都在https://api.io.mi.com/app 下,其中插件请求的接口大部分都在v2下。
Charle中选中某个接口,右边窗口选择Content->Form,就能看到这个接口的数据请求与返回。