版本问题

Android版本和微信版本在7.0以上,不再信任用户安装的证书,只信任软件内置的证书,这样无法抓包。

直接抓包

开启代理(例如:fiddler)进行抓包,发现小程序页面加载不全,且无法抓到https的包。此方法行不通了。

模拟器

使用夜神模拟器配合 burpsuite 进行抓包。夜神模拟器不一定要老版本,有人会觉得新版本抓取 HTTPS 包会比较麻烦,所以一直不敢换版本。其实模拟器最大的好处就是随意开启root权限,这样就算是Android7.0以上,我们只需使用root权限把证书安到系统内置列表就行。

然后就是常规的看IP、设端口、手机WiFi设置代理(代理地址和代理端口与bp需要一致)、浏览器访问IP:端口、下载证书、安装证书。

这方法也不行了。

PC端

既然移动端这么难搞,那么转移到PC端。PC端微信小程序直到2019年8月更新至2.7.0版本才有。相较于移动端,那抓包要容易的多。

PC端打开微信小程序,开启Fiddler代理,直接可以抓包。
(此方法也已经不行了)

PC端Plus

接上一小节,桌面端微信小程序升级,使用了不同的架构,Fiddler无法获取到参数信息。观察发现,小程序进程的名字从【WeChatApp.exe】

变成了【WeChatAppEx.exe】,如图:

Charles微信小程序抓包乱码 微信小程序抓包问题_抓包

有个临时解决方法。结束小程序进程,退出电脑微信,然后找到这个目录:

Charles微信小程序抓包乱码 微信小程序抓包问题_小程序_02

删除WMPFRuntime下所有的文件夹,然后重启PC微信,重新开始抓包即可。

PS:根据小程序功能的不同,该目录会有所区别。如果是类似于Web框架的,可以找到这个目录:

Charles微信小程序抓包乱码 微信小程序抓包问题_Charles微信小程序抓包乱码_03


删除目录下的所有内容,在重新启动微信即可抓包。

(以上方法极不稳定)

流量转发

利用流量转发可以彻底解决这一的问题。 可以用sockscap或者Proxifier,或者其它的软件都行。俺用的是Proxifier。

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。即:让代理不支持代理的程序变的可行(言语理解)。

Proxifier支持各种操作系统和各代理协议,它的运行模式可以指定端口,指定程序的特点。

我们指定的程序就是上面提到的【WeChatAppEx.exe】。

Charles微信小程序抓包乱码 微信小程序抓包问题_抓包_04


可以设置代理服务器。

Charles微信小程序抓包乱码 微信小程序抓包问题_微信小程序_05


代理规则需要设置优先级,一般俺放在最前面。

然后bp就可以像代理浏览器一样正常工作了。这里需要开全局代理。像Chrome浏览器其本身并没有用于设置代理服务器的任何特定配置选项,也就只能开全局代理。这也是一部分人喜欢用Firefox浏览器的原因。