基于Python的接口自动化测试(二)抓包工具Fiddler

常见的抓包工具

1. FiddlerFiddler是一款免费且功能强大的数据包抓取软件,主要用于抓取HTTP/HTTPS协议,简单易用目前主流的版本是Fiddler4,最新版本已经到了Fiddler5

2. Charles:这是一款在Mac下常用的抓包工具。

3. Wireshark:功能十分强大的抓包工具,可以支持spdytcpudp等网络协议的抓包。

对于测试来说,推荐使用Fiddler,简单实用。

 

Fiddler的配置

Fiddler目前已经更新到了Fiddler5,但是还不太稳定,所以推荐下载Fiddler4.

由于目前大部分的网站都使用的HTTPS协议,所以我们需要在Fiddler里面设置获取HTTPS

1.首先选择菜单栏里Tools一项选择Options

 基于Python的接口自动化测试(二)抓包工具Fiddler

 

2.打开Options后,选择HTTPS,勾选如下的三个选项

 基于Python的接口自动化测试(二)抓包工具Fiddler

3.根据不同情况选择抓取的目标,一般选择from all processes

from all processes :抓取所有的 https请求, 包括本机和手机

from browsers only :只抓取浏览器中的https请求

from non-browsers only :只抓取除了浏览器之外的所有https请求

from remote clients only :只抓取远程的客户端的https请求,可以代表手机

 基于Python的接口自动化测试(二)抓包工具Fiddler

4.安装证书

设置好HTTPS后,选择Actions,先点击Trust Root Certificate,然后点击Export

Root Certificate to Desktop,然后生成的证书会导出在桌面上。

 基于Python的接口自动化测试(二)抓包工具Fiddler

基于Python的接口自动化测试(二)抓包工具Fiddler

然后打开Google浏览器,打开设置。点击最下方的高级选项,选择管理证书

 基于Python的接口自动化测试(二)抓包工具Fiddler

选择导入,将桌面上的FiddlerRoot导入

 基于Python的接口自动化测试(二)抓包工具Fiddler

5.在Google浏览器里设置代理为127.0.0.1(本地),8888Fiddler抓包端口号)

 基于Python的接口自动化测试(二)抓包工具Fiddler

6.配置好Fiddler后需要重启一下Fiddler,不然设置不会生效

Fiddler的简单使用

1.主界面

当我们用Google浏览器输入www.baidu.com进入的时候,Fiddler就会捕获到请求

 基于Python的接口自动化测试(二)抓包工具Fiddler

根据上图,左边的竖框表示捕获到的请求列表。#号表示请求编号,没啥用。Result表示此次请求返回的code码,Protocol表示请求的类型,Host表示访问的主机(域名),URL表示要访问的资源地址。

我们选择一次请求,在右边选择Inspectors,就会出现两个横框,上面的横框表示这次请求中的Request请求的信息,下面的横框表示Response请求的信息。对于RequestResponseFiddler都提供了多种形式的展现。一般常用的查看格式有HeadersTextViewWebFormsRawJSON

2.操作请求

点击×可以有选择的删除请求

Remove all就是清空掉捕获到的所有请求,Images就时删除图片资源的请求,Non-200s就是删除code码为200以外的所有请求。

 基于Python的接口自动化测试(二)抓包工具Fiddler

Replay可以重新提交一次请求,达到模拟我们操作的效果

 基于Python的接口自动化测试(二)抓包工具Fiddler

3.设置过滤

Fiddler可以设置过滤规则使得我们可以只获取我们想要的HTTP请求。

首先启用过滤,勾选Use Filters

 基于Python的接口自动化测试(二)抓包工具Fiddler

一般我们只用关注Hosts里的设置

第一个选项表示网络的过滤,一般我们都选择No Zone Filter

No Zone Filter 表示不过滤

Show only Intranet Hosts 表示只显示内网请求

Show noly Internet Hosts 表示只显示外网请求

 基于Python的接口自动化测试(二)抓包工具Fiddler

第二个选项表示域名的过滤,根据不同需要来选择,一般我们都选择Show only the following Hosts

No Host Filter 表示不过滤

Hide the following Hosts 表示隐藏下方指定的域名请求

Show only the following Hosts 表示只显示下方指定的域名请求

Flag the following Hosts 表示加粗标记下方指定的域名请求

 基于Python的接口自动化测试(二)抓包工具Fiddler

这下方的输入框用来输入需要过滤的域名,可以过滤多个域名,域名与域名之间用;隔开,这里的域名是和上面第二个选项过滤规则配套使用的

 基于Python的接口自动化测试(二)抓包工具Fiddler

设置好之后,就能按照你所规定的规则捕获你之后操作的请求。

如果是要对之前已经捕获到的请求进行过滤,需要点击旁边的Actions,选择Run Filterset now就可以将之前捕获到的请求按照规则过滤显示。

 基于Python的接口自动化测试(二)抓包工具Fiddler

Fiddler还支持保存过滤规则

Save Filterset 可以将你此次设置的规则保存为ffx文件

Load Filterset 可以加载ffx文件获取过滤规则

Reload 一般是加载你最近保存的规则,提供的一个快捷方式,其实跟Load Filterset一样

4.模拟请求

有的时候前端还没有开发完成,我们可以使用Fiddler模拟请求来测试接口。

在右方编辑框选择Composer,会弹出一个编辑框。这里我们选择模拟的请求方式是GETurlhttp://www.baidu.com/,选择的协议是HTTP1.1。在下方的框就是请求头的内容,里面写上一些接口所需的参数(一般会根据接口文档来输入参数进行测试),填写完后点击右上方的Execute选择执行。最后成功捕获到这次模拟的请求。

 基于Python的接口自动化测试(二)抓包工具Fiddler


Fiddler是一门强大且易用的抓包工具,可以对RequestResponse进行断点,还可以进行编码和解码,但对于测试不是常用的功能。