前言
之前做移动端,对网络进行测试抓包一直用的Charles抓包工具,很实用的一款工具,那怎么抓微信小程序的包呢,实际跟移动端是一样的,下面统一记录下,避免换电脑遗忘。
抓包
其实要想抓取到微信小程序的数据首先要解决的第一个问题件就是如何通过charles抓取手机上的数据(HTTP)。
步骤
第一步
charles上通过proxy->proxy setting进入代理设置,入口如下图所示:
点击后进入如下图所示:
记住此处的port,默认为8888,也可以进行修改,只要不冲突就可以,勾选上Enable transparent HTTP proxying,到此为止完成charles上的初步设置。
到此为止,完成了电脑端的设置。
第二步
设置手机代理,注意要保证手机所连接的wifi跟电脑在一个局域网内(就是连接同一个wifi或者通过电脑分享出的wifi进行连接)
首先,需要知道电脑的ip地址,手机上进入wifi设置,电脑与手机共连同一个网络,修改手机上wifi代理
点击代理后进入如下界面,服务器主机名处填写刚才查到的电脑的ip地址即可,服务器端口填写第一步中charles处设置的端口,默认是8888,如果做了修改,填写设置charles时修改的端口值。
点击保存,此时charles上会弹出一个对话框,点击allow(允许)即可。此时就可以抓取手机上的http数据包了(注意不是https)
如下图所示,点入一个应用后,抓取到的http包。
建议
完成以上步骤,charles会同时抓取手机以及电脑上的数据包,如果针对手机抓包可以通过取消勾选下图所示的选项屏蔽掉,这样更清楚。
问题
手机连接不上Charles的几种原因及解决方案:
确认手机跟电脑是不是在一个wifi环境下,我在使用过程中又一次手机由于wifi信号强弱问题自动切换过wifi导致抓了一般的数据包抓不到了。
可以尝试更换一下端口号(8888可能已经被占用)。
可以通过电脑手动添加手机的ip。
试试关掉电脑防火墙,在重新连接。
最后大招,万能重启。重新打开charles,重新设置手机连接。
抓HTTPS包
电脑端设置
到此为止,完成了一大步骤的设置,可以通过电脑抓取手机的HTTP数据包了,但对于HTTPS数据,到此步为止,抓包工具上的列表部分会显示一堆unknown的地址。
那怎么来解决呢?
首先是电脑端的配置,进入Charles的Help->SSL Proxying->Install Charles Root Certificate
点击Install Charles Root Certificate之后,会弹出mac的钥匙串访问页面,点击允许并安装证书,加入成功后会显示如下:
右键点击该证书,选择菜单中的“显示简介选项”,接着进入信任栏目,将其全部置为“始终信任”
接着点击Proxy->SSL Proxy Settings,弹出如下页面
弹出的对话框中,勾选Enable SSL Proxying,然后点击add添加Host为和Port为443,点击ok(此处将host设置为的意思是主抓取全部的http是数据包,如果想针对某个域名抓取可以在此设置)
到此为止,完成了电脑端的设置
移动端设置
接着需要在手机端安装证书,点击Charles上的Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser
点击之后弹出如下对话框:
接着在手机浏览器上访问charlesproxy.com/getssl这个地址,然后会弹出如下界面:
输入一个名字比如charlesproxy之后点击确定,会有一个一闪而过的提示,就ok了
此时进入小程序,可以看到charles上能够看到https的接口的地址和数据了
到此,就可以愉快的抓包了。
注意
温馨提示1
苹果设备iOS10以后证书可以正常安装,可正常使用HTTPS抓包,但是安卓设备呢,需注意:
由于在Android7.0及以上的系统中,每个应用可以定义自己的可信CA集,默认情况下,应用只会信任系统预装的CA证书,而不会信任用户安装的CA证书
- 安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书
- 安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书
- 安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任它自己配置的证书列表
简单来说,就是安卓系统7.0及以下的设备可以正常安装证书进行HTTPS抓包,7.0以上则需要曲线救国,这里就不多说了,我后面在电脑上用网易MuMu模拟器(该模拟器系统是6.0)安装微信,在wifi设置里长按默认网络进行网络修改,设置代理等,也可以愉快的抓小程序的数据包了。
温馨提示2
注意,有一些应用使用的网络框架是不允许通过代理访问的,此时通过charles抓包显示的地址仍是unknown,或者手机上访问该应用会提示网络连接错误等信息,此时取消勾选charles的SSL Proxying settings中的勾选框就可以正常访问了。
温馨提示3
抓取工作完成后,记得把手机上的代理设置恢复原样,否则当电脑上的charles关闭时,手机将无法正常访问网络。