在ios应用开发过程中,为了进行端到端的分析,很多时候我们需要对手机的抓包进行分析。
对手机的抓包我们要在手机上安装抓包工具:tcpdump
前提:手机越狱;安装tcpdump 这样一部iphone就具备了抓包能力。
方法1:手机直接抓包(在手机上安装terminal用于输入命令)
不受网络条件制约,但由于是在终端上操作抓包,对ios设备来讲,MobileTerminal切至后台就不再工作,因此该抓包方法可行性较低,尽管如此,MobileTerminal对终端测试人员来说依然是一款很实用的工具;命令控推荐此方法。
方法2:通过pc/mac连接到手机(iPhoneTunnel软件,有mac和pc版本),通过在pc/mac下输入抓包命令,在手机上抓包。
pc下:用USB线缆连接终端与PC,确保手机终端正确,启动iPhoneTunnel,绿灯表示Tunnel Status正常,此时点击Launch Terminal按钮即可SSH进入终端,输入root密码,然后执行命令抓包
mac下:用USB线缆连接终端与mac,确保手机终端正确,启动iPhoneTunnel并开启后,点击tools->ssh(root) 菜单调出一个命令行界面,此时有可能报一个连接错误,输入ssh-keygen -R [127.0.0.1]:2222清除下里面的一个配置,即可正常连接。连接以后执行命令抓包,同pc。(tip:mac下终端输入密码时没有占位符,需要保证正确,注意)
WiFi下抓包tcpdump -i en0 -X -s0 -w data.pcap
2G/3G下抓包tcpdump -i pdp_ip0 -X -s0 -w data.pcap或 tcpdump -X -s0 -w data.pcap (两个都可以试下,我一般用前者)
抓包结束命令:ctl+c
敲此命令抓包的默认路径在var->root文件夹内。
总结:两个方法本质一样,都是利用tcpdump在手机上抓包,方法二通过ssh连接到手机去执行抓包命令(此时iphone充当一个server角色,pc/mac作为client连接到该server进行远程控制),因为抓到的包一般需要在pc/mac下用wireshark进行分析,所以pc/mac基本是必须的,推荐方法2。