前言
做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等。学会抓包分析是测试人员必备的功课之一。最先想的基本上都会是Fiddler代理抓包,但Fiddler有局限,如果APP不支持代理呢?比如邮箱是Imap协议呢?好吧,我们换个思路,安卓是基于linux,那么linux的抓包工具命令是不是也能试用呢?本文主要对tcpdump进行抓包举例。
[目录]
1、抓包原理
tcpdump(需Root用户运行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其他数据包。简单说就监控手机进出网络数据。
不明觉历啊….
官方网站: http://www.tcpdump.org(Android手机适用的另处下载)
2、方法优劣
3、安装准备
a.目前Root工具很多,随便下个操作一下即可,都傻瓜式的。比如什么刷机精灵、360一键ROOT、百度等等
b.解压下载的文件,再配置环境变量即可,具体请问谷哥或度娘,不再另做说明。
4、工具安装
1).Android手机USB连接电脑,打开Windows命令提示符窗口;
2).检查手机连接是否正常;
adb devices #检查手机是否已连接*执行记录*:
注1:已检查到手机连接正常
问题1:adb devices不可用 解决:检查环境变量是否配置正确。
问题2:检不到手机为空 解决:1、驱动是否安装;2、如有装腾讯手机管家,把tadb.exe进程给卡擦掉。
3).adb shell 进入手机修改 /data/local/ 目录的权限为所有用户可写;
adb shell #登入手机su #切换Root用户chmod 777 /data/local/ #修改目录权限,修改后Ctrl+C退出adb shell
4).将tcpdump程序copy至android手机;
adb push E:\tcpdump /data/local/ #tcpdump文件存放在E盘根目录,/data/local/为手机目标路径
5).进入手机修改tcpdump权限,增加可执行权限;
adb shell #登入手机su #切换Root用户chmod 777 /data/local/tcpdump #增加可执行权限*执行记录*(第3步至第5步)
注:/data/local/为了安全起见,建议把权限改回原先权限
5、实例
二期测试时,APP已不支持代理,抓不到数据包,测试无法准确知道是服务器问题还是APP问题,此处省略N字…以表对研发的诅咒。开玩笑的,大家目的都是为了版本质量提高,更加完善。下文以登录为例,进行演示。
1).连接手机,切换Root用户,执行抓包命令
adb shell #登入手机su #切换Root用户/data/local/tcpdump -p -vv -s 0 -w /sdcard/ThinkDrive.pcap #执行抓包命令,结果保存到SD卡ThinkDrive.pcap文件中
2).APP操作,生成请求数据
注:如果操作完成,不需要再抓包,则按Ctrl+C中断抓包退出
3). 导出抓包结果至电脑
adb pull /sdcard/ThinkDrive.pcap E:/ #前为手机中文件及存放路径,后为电脑E盘根目录
4). 使用Wireshark等工具分析抓包文件ThinkDrive.pcap