如何抓取小程序的数据包

如何抓取小程序的数据包

开发需要,需要抓取小程序的数据包,查看前端的数据请求。

软件

Fiddler

步骤

针对安卓智能手机,抓取小程序的包。(如果是小米的应用分身的话,还没有研究出来怎么抓包)
苹果系统的抓包方式类似,没有尝试过。安卓的证书认证方式和苹果有点区别。

1、
1) 电脑首先安装好Fiddler,然后开启WiFi热点(Windows10自带的蛮好用的),比如Dell-AP。
2) 设置防火墙入规则允许8888。
3) 通过ipconfig确定本机热点的网关地址。比如192.168.137.1。

2、
1) 勾选Fiddler中Options中的HTTPS选项中的Capture HTTPS CONNECTS、Decrypt HTTPS traffic、Ignore server certificate errors。
2) 勾选Fiddler中Options中的Connections中的allow remote computers to connect。保持端口8888不变。(端口冲突的话,第一步中防火墙以及第三步中的端口都需保持一致,比如均需要修改设置为8808)。
3) 关闭并重新打开Fiddler。

3、
1) 安卓手机连接上电脑的热点,然后在手机设置里的无线设置,选择自定义热点连接的Proxy,设置好主机为第一步获取到的网关地址,比如192.168.137.1,端口为8888。
2) 浏览器访问http://192.168.137.1:8888,下载Fiddler的证书,并使用手机中的证书管理(一般在手机设置 隐私 选项里)安装好这个证书。设置使用范围是APP。

4、之后可以用手机访问百度主页,观察电脑上的Fiddler,可以看到成功抓到数据包,并能查看HTTPS的内容。小程序也是可以的了。

总结

转自知乎,Fiddler抓取https的原理:

首先fiddler截获客户端浏览器发送给服务器的https请求,此时还未建立握手。
第一步,fiddler向服务器发送请求进行握手,获取到服务器的CA证书,用根证书公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥。
第二步,fiddler伪造自己的CA证书,冒充服务器证书传递给客户端浏览器,客户端浏览器做跟fiddler在第一步一样的事(手机中已经安装了Fiddler的根证书,所以是可以验证通过的)。
第三步,客户端浏览器生成https通信用的对称密钥,用fiddler伪造的证书公钥加密后传递给服务器,被fiddler截获。
第四步,fiddler将截获的密文用自己伪造证书的私钥解开,获得https通信用的对称密钥。
第五步,fiddler将对称密钥用服务器证书公钥加密传递给服务器,服务器用私钥解开后建立信任,握手完成,用对称密钥加密消息,开始通信。
第六步,fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文。再次加密(用伪造的证书公钥加密),发送给客户端浏览器。
第七步,客户端向服务器发送消息,用对称密钥加密,被fidller截获后,解密获得明文。
由于fiddler一直拥有通信用对称密钥,所以在整个https通信过程中信息对其透明。

所以,在浏览器面前Fiddler假装成一个HTTPS服务器,而在真正的HTTPS服务器面前Fiddler假装成浏览器。Fiddler会动态地生成HTTPS证书来伪装服务器。