用Charles
android4.0以上的系统,wifi环境下支持设置网络代理。
安装Charles
打开Charles,在
proxy
–>proxy settings
–>proxies
中设置要监听的端口号,一般为8080查看本机ip,
$ ifconfig
记住本机的ip地址,如222.11.22.11
将android手机连上wifi,确保与电脑处于同一ip段。
一般在wifi连接的高级设置里可以找到代理设置,将代理设置改为手动,
填入刚才记下的ip地址,以及Charles里设置的端口号8080,保存后退出。
现在手机的网络请求都会被转发到Charles上。
这种方法只适合于抓去android4.0以上系统,wifi环境的网络请求。
对于android2.x的系统,系统没有提供设置代理的方法。
或者,我们需要查看 2g / 3g / 4g 的网络请求,用Chalers就无能为力了。
用tcpdump结合wireshark
前提是手机要root过
tcpdump是一个开源跨平台的网络数据采集分析工具。
详细用法参见ggjucheng的博客。
首先下载tcpdump
将tcpdump push到手机sd卡上
$ adb push ./tcpdump /sdcard/tcpdump
用rootExplorer将tcpdump复制到*/system/xbin*目录下
获取root权限
$ adb shell $ su
给tcpdump加上权限
$ chmod 777 /system/xbin/tcpdump
然后就是执行tcpdump开始抓包了
$ tcpdump -p -vv -s 0 -w /sdcard/cap.pcap
等收集到足够的数据包后ctrl + c停止抓包
把收集到的数据pull到本地
$ adb pull /sdcard/cap.pcap ./
用wireshark打开pcap文件