什么是抓包?

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。

为什么要抓包?

定位问题、分析包!

在程序运行时,数据都是以数据包的形式进行传输,发送和接收数据的过程中,可能发出的数据有错误的数据,也可能接收的包中有错误的数据,从而导致程序处理出错,因此我们直接抓取传输的数据包,通过其他工具或方法解析数据包中的原始数据,可以定位是否因为数据输错导致的程序出错,如果出错又是因为那一部分的数据出错等。

抓包在我们测试时具体能做什么?

看前后台的数据传输、分析分析协议内容

1.从功能测试角度,通过抓包查看隐藏字段
Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF 攻击,防网络爬虫,以及一些其他用途。
这些隐藏字段在界面上都看不到,如果想检测这些字段,就必须要使用抓包工具。

2. 通过抓包工具了解协议内容,方便开展接口和性能测试
性能测试方面,性能测试其实就是大量模拟用户的请求,所以我们必须要知道请求中的协议内容和特点,才能更好的模拟用户请求,分析协议就需要用到抓包工具;
接口测试方面,在接口测试时,虽然我们尽量要求有完善的接口文档。但很多时候接口文档不可能覆盖所有的情况,或者因为文档滞后,在接口测试过程中,还时需要借助抓包工具来辅助我们进行接口测试。

3. 需要通过抓包工具,检查数据加密
安全测试方面,我们需要检查敏感数据在传输过程中是否加密,也需要借助抓包工具才能检查。

4. 处理前后端 bug 归属之争
在我们提交bug的时候,经常会出现前端(客户端展示)和后端(服务端的逻辑)的争议,那么可以通过抓包工具,确实是数据传递问题还是前端显示的问题。如果抓出来的数据就有问题的话,那么一般是后端的问题;如果抓出来的数据是正确的,那么基本上可以断定是前端显示的问题。

5. 通过抓包分析,可以更好的理解整个系统
经常使用抓包工具辅助测试,可以很好的了解整个系统,比如数据传输过程前后端的关系,以及整个系统的结构。特别是对现在的微服务架构的产品,抓包能够更好的梳理和掌握整个系统各个服务之间的关系,大大增加测试的覆盖度。另外还可以增进对代码、HTTP协议方面知识的理解。

Fiddler的安装与使用

工作原理

浏览器给webserver发送一个Request,webserver接收到Request后进行处理,返回给浏览器Response,然后浏览器解析Response中的html,展现网页给用户。

Java抓包的工具有哪些 抓包_Java抓包的工具有哪些

Fiddler工作于应用层,在client与webserver之间以代理服务器的形式存在,启动fiddler后会监听本地127.0.0.1的8888端口(默认端口),IE/Chrome浏览器会自动设置局域网代理(Firefox代理是独立的,需要单独设置)。浏览器给webserver发送一个Request,代理服务器fiddler接收到Request,fiddler将Request发送到webserver,webserver接收到Request后进行处理,Response到代理服务器fiddler,Fiddler将Response返回到浏览器。

基本界面

Java抓包的工具有哪些 抓包_数据_02

 图标、名称含义

Java抓包的工具有哪些 抓包_Java抓包的工具有哪些_03

Java抓包的工具有哪些 抓包_抓包_04

  

过滤

通过规则过滤掉我们不需要的请求,避免对调试造成干扰

规则: hosts域名过滤 、Client Process 进程、 Request Headers 请求头、 Break Points 断点、 Response Status Code 响应码 、Response Type and Size 响应类型和数据大小 、Response Headers 响应头信息

详情参看:Fiddler请求过滤

设置断点

我们希望在传递的中间进行修改后再传递,那么可以使用 Fiddler 的断点功能

  • 请求时断点:客户端发起请求,到达 Fiddler 时进行断点,请求并未成功发送到服务器,我们可以修改请求内容再发送给服务端
  • 响应时断点:服务端处理并返回数据给客户端,会先发送到 Fiddler,我们可以修改响应内容再返回给客户端

详情参看:Fiddler设置断点

弱网测试

一款APP针对不同网络情况下都需要保证不会崩溃,同时尽可能做到在弱网情况下也能达到功能正常使用,或者使用体验达到最佳。弱网测试可以测试APP的加载时间、可用性、稳定性和健壮性。这时我们就可以借助工具来模拟不同的网络状况,模拟2G、3G或弱网情况进行测试

详情参考:Fiddler及浏览器开发者工具进行弱网测试

性能测试

针对某一个、某些接口,发送相同的请求,不考虑参数的变化时,可以使用fiddler进行简单的性能测试,使用功能replay

选中一个请求,选中点击右键:

Java抓包的工具有哪些 抓包_数据_05

 选择Reissue Sequentially可以手动输入重发的次数,点击ok。