Fiddler和Charles一样,都是网络封包截取工具。可以利用Fiddler抓取web端、移动端与服务器之前的接口请求,测试人员可以根据请求数据快速地定位出软件出现bug的原因(是前端处理数据不当还是后端提供的接口数据有问题),研发也可以根据Fiddler抓取到的信息对软件产品进行调试。
Fiddler安装
一般我们选择下载可免费使用的Fiddler Classic,Fiddler Everywhere虽然是Fiddler Classic的升级版,其功能上的优化并不是很大,只是在使用性上会比经典版更加便捷些,而且试用期只有30天,30天后需要付费使用(当然,对于经济比较充裕的小伙伴,可以完全考虑下载Fiddler Everywhere版本)。下载官网Fiddler Classic 版本:点击此处前往下载 进入到以下界面,填写相关信息,点击Download Fiddler Classic进行下载: 下载成功后,可在电脑下载中查看到 FiddlerSetup.exe 应用程序,点击后一直点击NEXT 以下界面可更改Fiddler安装的路径,建议不要放于C盘,可放在常下载软件的文件中(此处我放于E盘中),选择好路径之后,点击install进行下载: 下载成功后会在界面上看见一个下图标,点击后界面如下就是安装成功了:
Fiddler组件介绍
Fiddler分为菜单栏和主界面,主界面包含四个部分:工具面板、会话面板、监控面板、状态面板
菜单栏
*** File *** Capture Traffic:开启/关闭捕获web请求,勾选该选项,所有设置了Fiddler为中间代理的web客户端所请求的数据都将会被Fiddler所捕获;取消勾选,则不启用Fiddler的功能,不会抓取到web端任何请求 New Viewer:打开一个与原视图一样的新的视图界面 Load Archive:加载/打开一个已存在的请求数据 Recent Archive:最近打开的请求数据 Save:保存数据 Import Session:导入会话 Export Session:导出当前会话 Exit:退出
*** Edit *** Copy:复制 Session :复制选中的session信息 Just Url :复制选中的session的URL Headers only :复制session的请求头信息 Full Summary:复制列表中所有session的信息 Terse Summary:复制session的简要说明 Remove:移除 Selected Sessions:移除选中的session会话 Unselected Session:移除未选中的会话session All Session:移除所有的session会话 Select All:查询所有选中的会话请求 Past as Session:粘贴会话 Mark:标记请求 Unlock for Editing:解锁锁定的session(有锁形的session),解锁后的session可进行编辑 Find Session:查找相关session会话
*** Rules *** Hide Image Requests:隐藏图片请求,session中不显示这类请求 Hide CONNECTs:隐藏CONNECT方法请求,session中不显示这类请求
Automatic Breakpoints:自动断点 Before Requests:在请求之前进行断点,多用于修改传递给服务器的请求内容 After Requests:在请求之后进行断点,多用来修改返回给客户端的响应内容 Disabled:禁用断点功能 Ignore Images:忽略图片请求 Customize Rules…:打开Fiddler ScriptEditor工具,调取脚本操作,用于网络修改、抓取某些如websoket包的修改,以及其它自定义的使用 Require Proxy Authentication:勾选该项,则所有未提交require proxy authentication的请求头的请求都会返回HTTP/407响应,要求客户端安装证书 Apply GZIP Encoding:请求GZIP编码,勾选该项,则只要请求头包含了gzip标志的Accept-Encoding请求头都会1对除了图片以外的请求使用GZIP HTTP进行压缩 Remove All Encoding:删除所有响应请求的http内容编码和传输编码 Hide 304s:隐藏所有304请求,不在session中展示 Request Japanese Content:将所有请求头转换为ja标志,标志客户端希望以日语的形式发送 Automatically Authenticate:自动进行验证 User-Agents:选择相应的用户代理模式(即你是用的浏览器信息),默认是diasbled Performance:其它选项 Simulate Modem Speeds:模拟调制解调器速度,会使所有下载数据延迟150ms/kb Disable Caching:删除所有 If-None-Matc h和 If-Modified-Since 请求头,并添加Pragma:no-cache请求头;还会删除Expires头,并将Cache-Control设置成no-cache。但浏览器还是可以重用之前浏览器所缓存的响应
*** Tools *** Option…:fiddler的一些设置项 General:通常设置,一般不需要进行改动
HTTPS:HTTPS协议设置 Skip decryption for the following hosts:该列表的hosts将不会被捕获到
Action:捕获到HTTPS协议包,必须点击Trust Root Certificate,进行下载证书 Connections:连接设置 Fiddler listens on port:设置代理端口号 Bypass Fiddler for URLs that start with:设置不被捕获到的URL Gateway:网关设置
Appearance 外观设置 Scripting:fiddler脚本设置
Extensions:记录一些扩展信息,一般使用不到,具体了解可前往官方查看相关文档
Performance:
Tools:fiddler程序编辑、脚本编辑、diff工具编辑 WinINET Options…:打开IE浏览器的option进行设置 Clear WinINET Cache:清空IE和其它应用中使用WinINET的缓存文件 Clear WinINET Cookies:清空IE和其它应用中使用WinINET的cookies文件 TextWizard:文本向导工具,可将text文本encode和decode
*** View ***
Show Toolbar:显示工具栏,默认是勾选的 Default Layout:默认layout,session在左,请求和响应在右
Stacked Layout:session在上,请求在下方
Wide Layout:session在上,请求和响应在下方的左右处
Tabs:设置Preferences、AutoSave、APITest
Preferences:进行属性偏好设置
AutoSave:自动保存设置
APITest:api调试
Statistics:查看一个请求的统计数据 Inspectors:嗅探,查看会话的内容,上面是请求,下面是响应 Composer:设计构造,可对请求数据进行修改,重新发送请求 Minimize to Tray:最小化托盘 Stay on Top:保持置顶 Squish Session List:挤压session框 AutoScroll Session List:自动滚动会话列表,默认是勾选此项的。勾选后,session框中每出现一个新的session,session列表就会向下滚动 Refresh:刷新
*** Help ***
Help:进入fiddler的帮助网页中 Get Fiddler Book:fiddler book的网页 Discussions:fiddler的讨论网页 HTTP Preferences:进入http perferences相关网站 Troubleshoot…:会捕获所有的请求,对于被过滤的请求用删除线表示出来并给出原因,使用时会打开一个网页 Get Priority Support…:打开网页购买fiddler的优先级服务 Check for Updates…:检查软件更新情况 Send Feedback…:意见反馈 About:当前fiddler的相关信息
工具面板
WinConfig:为了安全起见,window使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,这个功能等同于Tools–>Win8 Loopback Exemptions
Replay:重发选中的请求 Remove:移除某些状态的session,有移除所有Remove all、Images、CONNECTs、Non-200s、Non-Browser、Complete&Unmarked、Duplicate response bodies(移除重复的响应体)
Go:重跑选中的session Stream:流模式(一种实时通信模式),请求之后实时返回。fiddler默认是缓冲模式,非流模式 Decode:解码,session中有乱码时可解码,方便查看 Keep All session:设置session栏中保持的session个数 Any Process:只捕获某个浏览器的请求,点击此按钮拖动到要捕获的浏览器 Find:查询 Save:以SAZ文件的形式保存所有session :截图
:手动点击运行,手动点击暂停终止
Browser:打开浏览器查看相应数据
Clear Cache:清除WinNET的缓存,可按住ctrl点击清除已存在的cookies TextWizard:可解码/编码字串 Tearoff:将右边栏的请求和响应部分拆分成一个新的窗口,方便观察
MSDN Search…:在网页版的微软开发中去搜索 ?:fiddler的在线帮助网站 online:鼠标悬停显示本机的一些ip信息
×:用来关闭工具栏的按钮,在View中可打开
会话/监控面板
选中某列,右击展示项: 各列值: 选中某个session,右击展示: COMETPeek:COMETPeek命令会保留正在执行的响应的快照,在响应完成前就可以查看部分内容。当web应用采用COMET模式以流式向客户端返回数据时,可以使用该命令。 Clone Response:当session列表选中两个session,并且一个在断点处终止,而另一个已经运行完成时,该命令会把已完成的session响应拷贝给暂停运行的session
监控面板Deatil
Inspectors:详细展示了请求数据和响应数据
请求部分: headers:头部信息 TextView:显示POST请求的body部分为文本 SyntaxView:显示脚本 WebForms:以直观的界面显示QueryString的值和Body的值,这里的Body应该是application/x-www-form-urlen-coded格式 HexView:请求内容以16进制展示 Auth:显示hearer中Proxy-Authorization和Authoriization信息 Cookies:直观显示header中的cookies Raw:将请求以纯文本展示 JSON:请求参数以JSON格式展示 XML:将body中XML文件以XML分级数格式展示
响应部分; Transformer:响应信息的压缩编码格式 Headers:分级展示响应头部信息 TextView:文本展示响应信息 SyntaxView:显示脚本 ImageView:显示响应图片 HexView:以16进制显示响应内容 WebView: Auth:显示hearer中Proxy-Authorization和Authoriization信息 Caching:缓存 Cookies:展示header中的cookies Raw:纯文本展示相应内容 JSON:已JSON形式展示相应内容 XML:分级的XML树展示响应体中的xml内容 AutoResponder:重定向,可重新进行编辑响应数据,发送给客户端。可从左侧的session列表中直接拖进右侧生成规则,按自己的需求进行编辑 Rule Editor:匹配规则设置,第一列设置匹配的接口,第二列设置返回给这些接口的响应内容 匹配规则:
- 纯字符串匹配(字符串):可匹配到含有该字符串的请求(不区分大小写)
- NOT匹配(NOT:字符串):可匹配到不含有该字符串的请求(不区分大小写)
- EXACT匹配(EXACT:完整接口):完全匹配请求(区分大小写)
- regex匹配:(.+ )匹配一个或多个字符、( .*)匹配0个或多个字符、(^)匹配字符串开始位置、($)匹配字符串结尾位置 、等等
Composer:发送http请求,允许从session列表中直接将请求拖拽到右边自动填充数据,进行篡改数据,再次发送新的请求
Parsed应用: Scratchpad应用: Option:
Filters:session展示过滤器 Hosts配置:
Show Only Intranet Hosts 只展示内部网络地址请求session
Show Only Internet Hosts 只展示外部网络地址请求session
No Host Filter 不设置具体的Host过滤
Hide the following Hosts 不展示以下Host
Show Only the following Hosts 只展示以下Hosts
Flags the following Hosts 标记以下Hosts
Client Process:客户端进程配置
Show only traffic from *** 仅显示来自选择的通道
Show only Internet Explorer traffic 仅显示来自IE通道
Hide traffic from Service Host 隐藏来自服务主机的Host
Request Headers:请求头部过滤
Show only if URL contains 仅仅显示URL中包含的字符串(字符串可以URL中一部分,多部分用空格分开, 可以是正则或完整的URL)
Hide if URL contains 仅仅隐藏URL中包含的字符串(字符串可以URL中一部分,多部分用空格分开, 可以是正则或完整的URL)
Flag requests with headers 匹配请求Header包含的字段设置Flag(打一个标签加粗)
Delete request headers 删除请求中的Header字段
Set request header 请求中添加首页字段
Breakpoints:断点设置
Break request on POST 针对post请求设置断点
Break request on GET with query string 针对Get请求设置断点
Break on XMLHttpRequest 针对Ajax请求设置断点
Break response on Content-type 针对响应报文中首部字段Content-Type匹配成功的session设置断点
Response Status Code :响应状态码过滤
Hide success (2xx) 隐藏200状态码
Hide non 2-xx 隐藏不是2xx开头的状态码
Hide Authentication demands(401,407) 隐藏认证的(401 407)状态码
Hide redirects(300,301,302,303,307) 隐藏重定向(300 301 302 303 307)状态码
Hide Not Modified(304) 隐藏304请求
Response Type and Size:相应类型和报文大小
Show all Content-Type 显示所有类型的Content-Type
Show only IMAGE/* 仅显示图片
Show only HTML 仅显示HTML
Show only TEXT/CSS 仅显示CSS
Show only SCRIPTS 仅显示SCRIPTS
Show only XML 仅显示XML
Show only JSON 仅显示JSON
Hide IMAGE/* 隐藏图片
Hide smaller than 隐藏小于指定大小的响应实体
Hide larger than 隐藏大于指定大小的响应实体
Time HeatMap 时间的热图
Block script files 阻止返回正常JS文件
Block image files 阻止返回正常图片文件
Block SWF files 阻止返回正常SWF文件
Block CSS files 阻止返回正常CSS文件
Response Header:响应头部过滤
Flag responses that set cookies 响应中首页字段有cookies的加上标识(斜体)
Flag responses with headers 匹配的响应首页字段加上标识(加粗)
Delete response headers 删除响应首页字段
Set response header 增加响应首部字段
状态面板
Fiddler代理设置
Window 代理设置
Fiddler 默认代理本地服务器,如果抓取不到本地服务器,查看浏览器是否开启代理 本地默认代理设置时是这样的(针对Google):地址 http=127.0.0.1:8888;https=127.0.0.1:8888 代理远程服务器,则进行如下操作 步骤一:配置代理端口号,勾选允许远程电脑连接 步骤二;勾选可捕获到的协议请求,勾选https 步骤三:配置伪装证书,并存储在受信任证书列表中(一般存储选择的系统区域,是受信任区域) 步骤四:点击fiddler右上角的在线标志,查看本地服务器地址,将该地址与步骤一设置的端口号填入浏览器代理ip和端口号中 如下,打开Google浏览器代理:chrome://settings/ Setting–>系统–>打开您计算机的代理设置
Android 代理设置
步骤一、步骤二、步骤三与Window代理设置一样 步骤四:移动段与Fiddler所在本机在同一网络下,移动端浏览器输入fiddler连接的本地ip和步骤一设置的端口号(eg: http://10.0.5.23:8888),回车下载移动端fiddler证书,安装证书,并将证书设置信任 设置–>安全–>凭据存储–>从存储设备安装证书,安装后进入 信任的证书,选择相应的证书进行信任 步骤五:选择对应的wifi,设置代理,将步骤一的端口号、fiddler所在本地ip填入 步骤六:进行抓包
ios 代理设置
步骤一、二、三、四、五、六同Android代理设置 设置–>通用–>描述文件–>选择相应的证书进行安装,设置–>通用–>关于本机–>证书信任设置–>选择安装好的证书设置信任
Fiddler重定向
eg:重定向 百度搜索国庆:https://www.baidu.com/s?ie=UTF-8&wd=%E5%9B%BD%E5%BA%86
步骤一:将左边截取到的session拖至右侧AutoResponse内 步骤二:选择创建一个新的响应体 点击save进行保存,将会打开一个新的响应弹窗 选择TextView 点击View in Notepad后面的按钮,选择Notepad++打开文本编辑器,填写自己想填写的相应文本,这里我写的是:AutoResponse is success !!!
步骤三:保存后关闭小弹窗,回到fiddler原AutoResponse界面,Rule Editor选择 find a file… 找到刚才所编辑的响应文本
步骤四:重新请求,响应体变为刚才所修改的
Fiddler断点
对所有请求响应进行断点 对特定的请求响应设置断点:fiddler左下角命令操作 设置断点:bpu 服务器地址 取消断点设置:bpu
eg:断点 百度搜索国庆:https://www.baidu.com/s?ie=UTF-8&wd=%E5%9B%BD%E5%BA%86
断点请求: 步骤一:fiddler命令操作框输入:bpu www.baidu.com/s?ie=UTF-8&wd=%E5%9B%BD%E5%BA%86 回车后再次请求,该请求被断点,且前端没有正常加载出来 步骤二:修改请求数据,这里将WebForms中wd字段值‘国庆’修改为‘’七天假‘’,点击Run to Completion进行请求,响应返回查询七天假的结果 断点响应: 步骤一同断点请求 步骤二:点击 Break on Response 步骤三:选择相应的相应信息进行更改,更改成想要响应的信息,点击 Run to Completion,浏览器返回界面中增加了相应的内容 这里我将TextView 改成了 ‘is breakpoint success !’
|