前言
一直使用charles抓包,新项目遇到flutter框架的App,发现抓包无效了,查看文档发现是因为flutter设置了请求不走系统代理,所以抓不到了,要App中修改代码才行,但是只能对修改后的测试包生效,线上包就不行了。后来发现可以用wireshark抓取来解决问题。
原理比较:
charles:中间人代理,走系统的代理,拦截/转发http网络数据
wireshark:监听一个网卡,然后抓取网卡上请求/下发的所有网络(tcp/http等)数据
wireshark使用方法
Mac上建立热点,手机连接上后,选择监听WiFi eth0网卡
筛选条件
源ip : ip.src == 192.168.2.2
目标ip : ip.dst == 192.168.2.2
协议: http、tcp
url : http.request.uri contains "/api/“
或:or
且:and
例如筛选192.168.2.2上http协议,并且请求url中以/api/或/video/开头的所有网络数据:
(ip.src == 192.168.2.2 or ip.dst == 192.168.2.2) and http and (http.request.uri contains “/api/” or http.request.uri contains “/video/”)