如何在android上抓包


用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上。

    charles

这种方法只适合于抓去android4.0以上系统,wifi环境的网络请求。

对于android2.x的系统,系统没有提供设置代理的方法。

或者,我们需要查看 2g / 3g / 4g 的网络请求,用Chalers就无能为力了。


用tcpdump结合wireshark

前提是手机要root过

tcpdump是一个开源跨平台的网络数据采集分析工具。

详细用法参见ggjucheng的博客。

  • 首先下载tcpdump

  • tcpdump push到手机sd卡上

      $ adb push ./tcpdump /sdcard/tcpdump
    
  • rootExplorertcpdump复制到*/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文件

    wireshark


文章作者: Caden
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Caden !
 上一篇
Android Bitmap的一点研究 Android Bitmap的一点研究
android中的Bitmap与其他对象不同,不能通过new Bitmap()直接实例化. 查看源码,Bitmap的构造函数是default的,仅包内可见,实际是供native方法调用的。 Bitmap中实际保存数据的地方在native层,
2014-04-11
本篇 
如何在android上抓包 如何在android上抓包
用Charlesandroid4.0以上的系统,wifi环境下支持设置网络代理。 安装Charles 打开Charles,在proxy–>proxy settings–>proxies中设置要监听的端口号,一般为8080
2014-03-21
  目录