Skip to content

米家Android抓包文档

liuhaojie19 edited this page Sep 20, 2022 · 21 revisions

背景

SDK中的接口大部分都涉及到网络请求,开发者在使用SDK时难免会遇到一些问题。为了加强开发者的问题自排查能力,以及在提工单时能给我们提供更直接有效的信息,需要教会开发者如何抓包米家APP的网络请求。

教程

工具:Charles:https://www.charlesproxy.com/

此次教程以小米9为例进行教学,操作系统为Windwos 10

抓包前确保手机和电脑处于同一局域网下

1、下载证书

打开Charles,下载证书有两种方式

一、电脑传输证书

Android上优先建议使用这种方法下载证书,因为使用浏览器下载证书时有时会出现输入chls.pro/ssl后迟迟不会出现下载提示框或者证书下载失败的情况,这是手机操作系统或浏览器或Charles决定的,这时可以直接在电脑上把证书传输给手机

Help->SSL Proxying->Save Charles Root Certificate...

img1

选择存储路径

img2 img

将证书手动传输到手机即可。

二、手机浏览器下载证书

1、Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser

img

会弹出如下窗口

img

2、设置手机Wifi代理,主机名填上图中的ip部分10.224.206.28,端口也是,此处填8888。

img

设置好随便进行一次网络请求,后Charles会弹出提示框,点击Allow。

img

3、打开手机浏览器,输入地址: chls.pro/ssl,下载证书。

img1

2、安装证书

进入手机设置->WLAN->高级设置->安装证书,找到下载好的证书并命名安装。

img|img

在“凭据用途”这个选项,选择"VPN和应用"即可。

img|img

注:因手机型号和系统版本差异,建议开发者们在设置中搜索关键词“证书”,然后将所有可以安装的选项都安装上,避免出现无效安装的情况

img

证书安装好后还需要在设置中设置一样要抓的Host和Port,建议全都抓取,Proxy->SSL Proxying Settings->Include->Add,Host中输入"*",Port可不填写

img

3、打开抓包开关

经过上述步骤就已经可以在Charles上看到米家APP传输的数据了,不过是APP加密后的数据,要看到明文数据还得在APP中打开明文传输开关。

img

Android米家APP需要使用在firm上下载的APP:http://d.7short.com/MiHomeForAndroid (密码:keliyuan)

登录开发者账号,在“我的”->“开发者选项”->“开发者模式”->“其他设置”中打开“是否强制使用明文传输数据”即可。

img|img

打开开关后在某些情况下可能还是无法看到明文数据,退出APP重进一次即可。

米家APP的所有网络请求都在https://api.io.mi.com/app下,其中插件请求的接口大部分都在v2下。

img

Charle中选中某个接口,右边窗口选择Content->Form,就能看到这个接口的数据请求与返回。

img

4、注意事项

1、每次抓包前请确保手机设置好了wifi代理。

2、当手机设置了代理后电脑端如果关闭了Charles的话手机将无法访问网络。

3、每次设置好代理后请看一眼Charles的弹窗,务必点击Allow,否者将无法抓包。

4、Charles一次性记录抓包数据时间过长时,会使APP的网络请求变慢,所以建议经常清理抓包记录和不必要时关闭抓包。

img
Clone this wiki locally