在我们日常测试过程中经常需要抓取网络包,查看上下行的数据是否正确。抓取移动设备上的网络包的通常思路是在pc机上打开抓包工具,然后让移动设备走pc的代理上网,从而在pc上抓取移动设备的网络包。
Charles和fiddler是经常用到的2款抓包神器。
然而在实际工作中经常有小伙伴产生疑问,为啥有的移动设备上的网络包能抓到,有的不能呢?
要回答这个问题,首先我们得弄明白我们测试的游戏或app客户端与服务端网络通信使用的是什么协议,是http还是websocket。为了弄清这两者的区别,笔者特地找了张图来说明,大家看一下就明白了。
看了这张图,是不是就明白为什么有些包能抓到,有些包抓不到了吧。因为我们常用的2个抓包神奇(charles和fiddler)都不支持抓取websocket。而支持websocket的wireshark却无法设置手机代理,令人无奈啊。不过还好,方法总是有的。
万一遇到使用websocket的移动项目,是不是就无法抓取数据包了呢?答案是否定的,本文笔者就給大家介绍一种方法,步骤如下:
前提条件:注意,要完成代理正常运行,请让pc和移动设备都在同一个无线网络段内。
1,在pc上开启常用的可做代理的抓包工具(mac推荐charles,windows推荐fiddler),开启后,手动设置要测试的移动设备的网络,使其走pc的抓包工具代理。
2,在同一台pc上开启wireshark,在wireshark中过滤出websocket的网络包即可。
笔者亲验可行,在手机上的游戏中随便做点操作,截图如下:
是不是很简单啊,思路就是把支持代理但不支持websocket抓取的工具和不支持代理但支持websocket抓取的工具结合起来使用