前言
抓包干什么?
抓包指的是抓取网络数据包。在移动开发中,网络开发基本上都要用到抓包,主要2方面用处:
- 接口调试。
- 抓取数据
抓包方式有哪些?
我了解的有三种:
- Tcpdump:最简单便捷的抓包方式,但是Android设备需要root过,还要对网络协议有很深的理解。有兴趣可以点这里
- Charles:charles和Fiddler都需要在手机上设置代理和下载证书。但是charles正版收费,并且一般mac用户用这个比较多。有兴趣点这里
- Fiddler:Fiddler操作简单方便,并且有良好的界面去查看包数据
步骤
HTTP
- 下载Fiddler。下载地址
- 电脑设置端口和远程连接。打开Fiddler,菜单栏选择Tools-->Fiddler Options或者Teleric Fiddler Options-->Connections-->勾选Allow remote computers to connect,这个操作是让电脑允许远程网络连接,在connections选项中Fiddler listener on port默认值为8888,指的是默认电脑打开的代理端口,如果你的电脑8888端口被占用的,请自己设置为未被占用的端口。这个端口在下边手机设置中也会被用到。[图片上传失败...(image-d25a90-1515208970295)]
- 手机设置代理。打开手机wifi设置,选择一个与电脑在同一局域网的wifi,长按或者点击操作键进入修改网络页面,选择高级选项,在弹出的选项中,修改[代理]为手动,修改[代理服务器]为你电脑的ip地址(cmd-->ipconfig-->ip address或者ip v4对应的就是),[端口]设置为上一步connections选项卡中你设置的端口。[图片上传失败...(image-e447a-1515208970295)]
- 在手机浏览器输入代理服务器ip+端口号如192.168.4.208:8888,会进入Fiddler Echo Service页面,点击最后一个超连接FiddlerRoot certificate下载证书并安装。
【修改】:据反馈,有的手机在下载完会自动弹出安装页面,有的不会,如果没有自动弹出的需要自己手动找到证书并安装。
【重要】:在小米手机上如果下载完直接点击证书选择安装,会提示 无法安装该证书,因为无法读取证书,可能是因为小米的一些安全策略,手机无法直接安装证书。这里需要在手机设置里选择从设备安装证书,步骤为:设置---更多设置---系统安全---从存储设备安装--选择文件
[图片上传失败...(image-1e4783-1515208970295)]
- 密码认证。这一步有的手机有有的手机不用。在安装证书的时候,有的手机为了安全性,如果你设置了手机密码会让你验证密码,按提示做就行。
- 这里加一步网络验证吧。如果你做完了以上的步骤,请在浏览器或者任何联网的地方验证网络是否通畅,如果不通畅请重新安装证书或者检查代理ip和端口是否正确。
- 在Fiddler上验证。打开Fiddler,点击清楚按钮清空所有数据,在手机上随意点击网络连接,看Fiddler中是否出现对应的数据包
HTTPS
- 按上边HTTP的步骤配置。
- 设置Https拦截。打开Fiddler,菜单栏选择Tools-->Fiddler Options或者Teleric Fiddler Options-->HTTPS。勾选CaptureHTTPS CONNECTs,勾选Decrypt HTTPS traffic,在弹出的选项中勾选Ignore servercertificate errors点击OK。(首次点击会弹出是否信任fiddler证书和安全提示,直接点击yes就行)
踩坑
- 手机不同手机设置也不尽相同。wifi的设置不相同和证书的安装不太相同,但是大同小异按着步骤走就没事。
- 我之前在别的文章的看到的步骤不是上边的步骤,其中在http设置的时候没有安装证书这一步,导致无法拦截到数据包。
- 网上有说电脑要关防火墙才能抓包,我试了一下,就算开着防火墙也能抓到包的。
总结来说,如果抓不到包主要考虑4点:
- 网络问题。因为手机要跟电脑在一个局域网,所以请不要用隔壁老王家的wifi来调试QAQ。一般来说电脑网络跟自己常用的wifi都是在一个局域网的吧。还有一种情况就是http设置步骤的第6步描述的。如果真的断网就没有办法了。
- 证书问题。如果安装好了证书会在手机的安全设置里信任的屏据中用户中出现,如果没有就重新安装。[图片上传失败...(image-3a0866-1515208970295)]
- 据反馈,有的手机在下载完会自动弹出安装页面,有的不会,如果没有自动弹出的需要自己手动找到证书并安装。
- 在小米手机上如果下载完直接点击证书选择安装,会提示 无法安装该证书,因为无法读取证书,可能是因为小米的一些安全策略,手机无法直接安装证书。这里需要在手机设置里选择从设备安装证书,步骤为:设置---更多设置---系统安全---从存储设备安装--选择文件
实战
Fiddler对比Tcpdump设置挺复杂的,但是他有良好的用户界面,能帮我们吧数据进行分析分类。
[图片上传失败...(image-67cbf0-1515208970295)]
Fiddler界面左边显示所有数据包,右边显示单个数据包信息,
右边上半部分是请求数据,下半部分是响应数据。
[图片上传失败...(image-f06559-1515208970295)]请求数据中主要点击上半部分Inspectors选项卡的headers查看请求头的内容。
[图片上传失败...(image-7846fe-1515208970295)]下半部分主要通过选择json选项卡查看json数据格式的内容。值得注意的是,json选项卡主要是用来查看json数据,并不能够复制,如果你想复制这些数据可以点击webview选项卡
[图片上传失败...(image-5413d4-1515208970295)],我们看到选项卡上边有一栏淡黄色提示框,点击即可对响应数据解码得到响应字符串。