作为软件测试工程师,抓包总是不可避免:遇到问题要做分析需要抓包;发现 bug 需要定位要抓包;检查数据传输的安全性需要抓包;接口测试遇到需求不全的也需要抓包... 就因为抓包在测试工作中无处不在,所以市面上才会出现一大批的抓包工具供大家选择。
之前也发过一些文章介绍一些常用抓包工具,比如 wireshark,Charles 等,然后有很多小伙伴私信或者留言问得最多的一个问题就是“这个工具和 xxx 工具有什么区别呢?” 或者 "这个工具和 xxx 工具谁更好用呢?"
所以,为了解决大家的这个疑惑,让大家能够合理地选择更适合的工具,更好的辅助测试工作的执行,我们今天就来分析一下各种爆款的抓包工具的优劣势。
Fiddler 工具非常经典且强大,这点大家应该都所体会。它可以提供电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请求替换和数据篡改,也可以进行请求构造,还可以设置网络丢包和延迟进行 APP 弱网测试等。
所以,fiddler 的第一个优点,就是功能强大并齐全;
第二个优点就是 Fiddler 是开源免费的,所有的电脑只要安装就可以直接使用所有的功能!这无疑也是一个非常大的优势,为它也拉拢了大量的用户!
当然,它也有自己的缺点:只能在 windows 下安装使用。如果要在其他系统上抓包,比如 MacOS 系统,Linux 系统,那么 Fiddler 就无用武之地了。
Charles 工具别名“花瓶”,它是通过代理来实现的抓包,也就是我们在访问网页时配置代理指向 Charles 监听的端口,之后所有的请求 Charles 会帮我们转发并记录。
Charles 的使用非常简单,配置好代理后,Charles 就开始抓包了。我们可以直接通过它的 GUI 查看包的内容,其实功能和使用跟 Fiddler 非常的雷同,同样可以提供电脑及手机端的抓包分析、设置断点、弱网环境模拟等,那么它跟 fiddler 的区别在哪里呢?
优点:
缺点:
Charles 工具是不免费的。它需要购买 license,如果不购买使用的话就会每 30 分钟断一次,使用体验非常不好!
Wireshark 也可以在各个平台都可以安装使用,不过它的功能侧重点和 Charles&Fiddler 有所不同,它主要用来抓取网络中的所有协议的数据报文,对于分析网络协议以及网络问题方面非常专业!
Wireshark 工具的优点:
Wireshark 工具的缺点:
Burpsuite 工具也是基于 Java 语言开发的,所以它也可以跨各平台使用,包括 Windows,MacOS 及 Linux 等系统平台。
Burpsuite 可以提供抓包功能,它的工作方式同样也是在浏览器和网站之间做了代理从而实现报文截取的;也能够修改数据内容并转发的功能;甚至还可以选择使用爬虫爬下网站相关的数据...
但是,它绝对不仅仅是一款抓包工具,它集成了很多实用的小工具可以完成更加强大的功能,比如 http 请求的转发、修改、扫描等。同时这些小工具之间还可以互相协作,在 BurpSuite 这个框架下进行定制的攻击和扫描方案。
所以这个工具很多功能测试的人员会使用它进行报文抓取和篡改数据,很多安全测试人员会借用它进行半自动的网络安全审计,开发人员也可以使用它的扫描工具进行网站压力测试与攻击测试,功能作用范围更加广泛。
不过它也有自己的缺点,就是不免费!每个用户一年的费用为 299$,使用成本相对来说有点高。
F12 是众多抓包工具中最简单、最轻量级的,因为它是浏览器内置的开发者工具来提供捕获浏览器的数据报文的功能。它免安装,直接打开浏览器就可以直接使用,所有使用非常好上手,适合入门级别的新手学习。
它主要针对的是 HTTP 协议和 HTTPS 协议, 可以确认我们的网络数据包的一个状态, 通过分析请求和响应报文里面的内容, 分析出来请求数据和响应数据是否正确, 定位问题是前端问题还是后端问题。
而且 F12 作为浏览器的一部分,是数据收发的一端,抓取到的 HTTPs 报文是可以得到明文数据的;不过因为只能抓当前浏览器的收发报文,层次只能是在应用层 Http(s)协议,不能抓取其他的数据报文。
虽然 F12 抓包调试也能满足我们基本的测试工作需求,但是作用面和强大性和其他的抓包工具还是有一定差距的。
TCPdump 我上周发过一篇文章专门介绍过,这是专门作用于 Linux 命令行的抓包工具,它可以提供非常多的参数来对网络数据包进行过滤和定义。
而它抓取到的报文可以直接打印在 Linux 的命令行界面,也可以进行保存成文件,并用 Wireshark 工具打开进行更加细致的分析。
想要了解更多,可以查看具体的文章。
综上所述,测试可以用的抓包工具非常多,然而它们各有各的优势,也有对应的不足,所以根据自己的使用场景,选择最适合的抓包工具才是最重要的!