编写完成日期:2021-11-22


一、原理以及注意事项

Fiddler工作原理:Fiddler 本质是一个Web代理服务器,Web 代理(Proxy Server)服务器是网络的中间实体。如上图所示,代理服务器位于 Web 客户端和 Web 服 务器之间,扮演“中间人”的角色,HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。

注意:Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

注意:启动fiddler后会监听本地127.0.0.1的8888端口(默认端口),IE/Chrome浏览器会自动设置局域网代理(Firefox代理是独立的,需要单独设置)

二、抓包配置

基础配置

路径:启动Fiddler  Tool》Fiddler Options》HTTPS

注意:Option更改完配置需重启Fiddler才能生效

选中"Decrpt HTTPS traffic",    Fiddler就可以截获HTTPS请求,如果是第一次会弹出证书安装提示,若没有弹出提示,按照路径依次点击,使系统信任证书:Actions》Trust Root Certificate。另外,如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 “Ignore servercertificate errors” 勾选上。

Action菜单介绍:

1、Trust Root Certificate :安装信任Fiddler证书

2、Export Root Certificate Desktop :导出Fiddler证书到桌面

3、Open Windows Certficate Manager :打开电脑的证书管理器

4、Learn More about HTTPS Decryption :进入官方文档,学习抓包HTTPS

5、Remove Interception Certficates :删除拦截证书

6、Reset All Certficates :重置所有证书

Fiddler证书安装,按下列图点击“是”或者“yes”即可成功安装。

路径:Action》Open Windows Certficate Manager 打开证书证书管理器,可以看到Fiddler证书名字DO_NOT_TRUST_FiddlerRoot,如下图。

手机端抓包配置

路径:Tools》Options》Connections,勾选Allow remote computersto connect,允许远程设备连接,Fiddler的默认端口是8888,也可以在此页面进行修改。

获取电脑的IPV4地址。

在手机浏览器中输入电脑ip+Fiddler端口,这里是10.1.226.74:8888,然后在下图红色框位置点击下载安装Fiddler证书。

iPhone必须用苹果自带的浏览器即:Safari

手机端设置代理,从左往右依次点击下列红色框位置。

如果没有抓到包,可能原因:

1、Fiddler打开了筛选  (因为配置没错,我检查了很久都没有发现问题)

2、手机没有安装fiddler证书 (手机用的多了,还以为自己都安装了,耽误我十分钟)

三、Fiddler功能介绍

 Fiddler主界面

序号1处为主菜单栏、序号2为基础工具栏、序号3高级工具栏、序号4为Fiddler命令行、序号5为抓包开关、序号6为简易过滤功能、序号7为会话列表、序号8为Request请求内容、序号9为为Response响应内容,下面将依次介绍。

主菜单栏介绍

1、file菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获(capture),也可以加载或存储捕获的流量。

(1)Capture Traffic是个开关,可以控制是否把Fiddler注册为系统代理。当把Fiddler注册为系统代理时,所有依赖于WinINET代理的应用(如IE浏览器和其他浏览器)会把Web请求发送给Fiddler.

(2)New Viewer是用来打开一个新的fiddler窗口

(3)Load Archive用于重新加载之前捕获的以SAZ文件格式保存的流量。

(4)Save子菜单中的选项支持以多种方式把流量保存到文件中;该菜单选项和Web Session列表中的上下文菜单中的选项相同。

(5)Import Sessions...支持导入从其他工具捕获的流量,也支持导入以其他格式存储的流量。

(6)Export Sessions...支持把Fiddler捕捉到的Session以多种文件格式保存

(7)Exit菜单命令会取消把Fiddler注册为系统代理,并关闭工具栏

2、Edit菜单中的绝大多数命令都需要作用于Web Session中当前选中的Session,因此除非选中一个或多个Session,否则大多数命令都不可用。

(1)Copy下面的几个子菜单分别支持复制选中Session的某些信息。

(2)Remove下面的子菜单分别支持从Web Session列表中删除全部、选择或未选中的Session

(3)Select All命令选择Sessions列表的所有内容。

(4)Paste as Session命令会基于剪贴板上的内容,生成一个或多个模拟的Web Session.

(5)Mark子菜单支持选择一种颜色来标记Web Session列表中选中的Session.

(6)Unlock for Editing 菜单命令会对某个选中的Web Session解锁,支持使用Inspectors编辑Session的所有请求和响应。

(7)Find Session...命令会打开Find Session窗口,搜索捕获到的数据流。

3.Rules菜单

(1)Hide Image Request触发器控制是否在Web Session列表中显示图像类Session.

(2)Hide CONNECTS触发器控制是否在Web Session列表中显示使用CONNECT请求方法的Session.

(3)Automatic Breakpoints子菜单控制Fiddler是否会自动在Before Requests或After Responses处设置断点。Ignore Image触发器控制这些断电是否作用于图片请求

(4)Customize Rules...菜单命令会使用配置的脚本编辑器打开当前的FiddlerScript文件

(5)如果选中Require Proxy Authentication菜单项,所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应,要求客户端安装证书

该规则可以用于测试HTTP客户端,确保这些规则在有证书的客户端服务器上可以正常工作。

(6)如果选中Apply GZIP Encoding菜单项,只要请求包含具有gzip标识的Accept-Encoding请求头,就会对除了图片以外的所有响应使用GZIP HTTP进行压缩。

该规则用于测试使用GZIP选项支持的客户端是否真正对内容进行压缩。该选项还支持性能调优,并且计算传输的压缩后的数据流的字节数。

(7)如果选中Remove All Encoding,会删除所有请求和响应的HTTP内容编码和传输编码

(8)Hide 304s选项会隐藏包含HTTP/304 Not Modified状态的响应的所有Session.

(9)Request Japanese Content选项会把所有请求的Accept-Encoding请求头设置或替换为ja 标识,表示客户端希望响应以日语形式发送

(10)User-Agents子菜单支持把所有请求的User-Agent请求头设置或替换成指定值。

(11)performance子菜单提供影响Web性能的简单选项

4.Tools菜单

(1)Fiddler Options...打开Fiddler Options窗口

(2)WinINET Options...打开IE的Internet Options窗口

(3)Clear WinINET Cache选项会清空IE和其他应用中所使用的WinINET缓存中的所有文件

(4)Clear WinINET Cookies选项会清空IE和其他应用中所发送的WinINET Cookie.

  Session的Cookies还是保持不变

(5)TextWizard...选项会启动TextWizard窗口,支持对文本进行编码和解码

(6)Compare Session选项只有当选中Web Session列表中的两个Session时才有效。

(7)Reset Script

(8)Sandbox,打开http://webdbg.com/sandbox/

(9)View IE Cache

(10)HOSTS...选项会打开Fiddler的Host Remapping工具

(11)New Session Clipboard..打开一个Session的剪贴板

5.View菜单

(1)Show Toolbar控制Fiddler工具栏是否可见

(2)Default Layout、Stacked Layout、Wide Layout三种界面布局

(3)Minimize to Tray或按下CTRL+M可以最小化Fiddler到系统托盘中

(4)Squish Session List控制Web Session列表是否水平收缩

(5)AutoScroll Session list选项控制当添加新的Session时,Fiddler是否会自动滚动到Session列表的底部

6.Help菜单

四、Fiddler工具栏介绍

路径:View》Show Toolbar,控制打开和关闭工具栏。

①WinConfig、②备注、③回放、④会话清除、⑤解开请求断点、⑥调试、⑦解码、⑧每页最大会话数、⑨会话过滤、⑩查找、11保存、12延时截屏、13计时器、14浏览器快速启动、15清除缓存、16文字编码、17分离、18搜索

1、Winconfig:Windows 使用了一种称为“AppContainer”的隔离技术,使得一些进程请求无法捕获,打开WinConfig后可设置解除隔离。

2、备注:选中会话,点击气泡进行备注,备注后会出现在该会话的comments列

3、Replay回放:选中会话,点击Replay,会重新发送该会话请求

shift+r 可以选择对该接口发送几次请求,及简单的压力测试
ctrl+x 删除所有请求
shift+delete 删除非选中的请求
delete 删除选中的请求

4、会话清除:表示清空会话列表,也可以进行清除指定类型会话

5、GO:表示可以使用请求往下走,这个可以和Fiddler断点进行使用

6、Stream:表示用来模式切换,在流模型和缓存模式下进行切换

流模式:理解成为一种实时通信的模式,有请求就有返回,也就是实时返回

缓存模式:等待所有的请求都到一起在返回,也就是等所有的数据都准备好了以后才返回给客户端

7、Decode:选中会话,点击后根据响应编码方式解码

8、Keep All Sessions:表示保持会话数,会话数保持越多,内存压力越大

9、Any Process:表示所有会话,可用按住该按钮,当拖动到指定软件上(比如IE浏览器),就只会抓取该软件的相关请求(这里就只抓取IE浏览器请求)

10、Find:查找会话,并默认黄色标识该会话

11、Save:保存你需要的会话

12、延时截屏:点击后延时5秒截屏,并以会话的形式输出

13、计时器:就是⏲计时

14、快速启动浏览器选择:可选择浏览器快速启动

15、清除缓存:清除Fiddler缓存内容

16、文字编码:点击后可以选择编码和解码方式

17、分离:点击后窗口分离,关闭后恢复原来样子

18、搜索:和浏览器搜索一样

五、高级工具栏介绍

1、Fiddler Orchestra Beta:待理解,暂时不会,先放个链接https://zhuanlan.zhihu.com/p/417556751

2、FiddlerScript:Fiddler本身配置的相关脚本,可以修改Fiddler的一些功能,如弱网测试的网速限制

3、Log:Fiddler日志

4、Filters:过滤功能,规则说明如下展示

1) Hosts:主机 过滤

- No Zone Filter :不过滤
Show only Intranet Hosts :只显示内网主机的请求
Show only Internet Hosts :只显示外网主机的请求

- No Host Filter :不过滤
Hide the following Hosts : 隐藏文本框中的相关主机请求
Show only the following Hosts :显示文本框中相关的主机请求(多个用分号分开)
Flag the following Hosts :标记(高亮)显示文本框中的主机请求

2)Client Process :客户端过滤
Show only traffic from :只显示指定客户端的请求,右侧有当前的 Windows 进程可选择
Show only Internet Explorer traffic : 只显示 IE浏览器请求
Hide trafficfrom service host :隐藏来自service host的请求

3)Request Headers :请求头过滤
Show only if URL contains :只显示包含该字段的URL请求
Hide if URL contains :隐藏包含该字段的URL请求(多个用空格分开)

Flag requests with headers : 标记特定header的请求,如cookie,token
Delete request headers :删除请求中的Header字段(如测试时删掉URL中的cookies信息,用来判断服务器是否有做校验功能)
Set request Header :在请求header中添加字段,用途与上一致

4)Breakpionts :设置断点
Break request on Post :对Post请求设置断点
Break request on GET with query string : 对Get请求设置断点
Break on XMLHttpRequest : 对Ajax请求设置断点
Break response on Content-type:对匹配Content-Type字段的响应设置断点

5)Response Status Code :响应状态码过滤

Hide success(2xx) : 隐藏状态码为2xx的请求
Hide non-2xx : 隐藏状态码非2xx的请求
Hide Authentication demands(401,407) : 隐藏认证(响应状态码为:401 407)请求
Hide redirects(300, 301, 302, 303,307) : 隐藏重定向(响应状态码为:300 301 302 303 307)请求
Hide Not Modifield(304) : 隐藏(304)请求。

6)Response Type and Size :通过响应类型和大小过滤

Show all Content-Type : 显示所有类型Content-Type的请求
Show only IMAGE/* : 仅显示响应类型为图片的请求
Show only HTML : 仅显示响应类型为HTML的请求
Show only TEXT/CSS : 仅显示响应类型为TEXT/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文件
小技巧:这个功能可以测试CSS、JS等加载失败的情况下页面的展示情况。

7)Response Header :响应头操作

Flag responses that set cookies : 标识(斜体)响应中有cookies信息的请求
Flag responses with headers : 标记(加粗)响应header中带有特定字段的请求
Delete response headers : 删除响应header中有指定字段的请求
Set response header : 在响应header中添加指定字段

5、TimeLine:请求事件瀑布图,瀑布图理解

6、Get Started:

7、Statistics:请求统计视图,用来查看某个页面所有请求的从第一个请求开始到最后一个请求结束的响应时间

用法:Ctrl选中需要的会话请求,点击该按钮即可

8、Inspectors:会话检查器,点击会话内容默认此选项

9、AutoResponnseder:重定向响应选择,可修改返回修改后的响应数据

10、Composer:自定义请求,用于请求发送

六、会话列表介绍

略过

会话属性操作

七、弱网测试

概念:弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。

意义:模拟在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。

这里借用其他人的图片。

Fiddler弱网测试流程:

1)路径:Rules》Cutomize Rules 或者 直接点击下图中的FiddlerScript,检查修改需要的下载和上传延时,目前上传速度1Kb/300ms,也就是3.3kb/s

2)然后勾选弱网开关,路径:Rules》Performance》Simulate Modem Speeds,注意,改动FiddlerScript后会自动关闭弱网,正确流程,先修改,后开启

八、简单的并发测试

选中请求,按键shift+r,然后输入并发次数,如下图

九、实用小技巧

1、对会话列添加查看请求的服务器IP

1)打开FiddlerScript,找到 static function Main() ,然后去掉注释

2、修改域名指向的服务器IP

用处:当生产环境、不同的测试环境、预发环境指向同一域名时,通过绑定Hosts的方式强制指定域名的服务器IP

1)路径:Tools》Hosts.... ,勾选Enable remapping of requests for one host to a different host or IP,overriding DNS,即激活文本框内容

3、断点

1)命令模式:

bpu  www.baidu.com   中断该域名的请求

bpafter www.baidu.com  中断该域名的响应

2)下图所示

问题一:fiddler抓包导致的跨域名错误CORS.error的解决办法

解决:

依次点击Rules》Customize Rules,在该脚本中找到 OnBeforeResponse 函数,增加如下代码:

//  增加下面的if全段代码
        if(oSession.uriContains("完整url")){
            oSession.oResponse["Access-Control-Allow-Origin"] =  "域名";
        //    oSession.oResponse["Access-Control-Allow-Credentials"] = true;
        }

例子:

static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
        if(oSession.uriContains("https://dev-api.fa-part.com/forface/selector/productDetails/productInfo")){
            oSession.oResponse["Access-Control-Allow-Origin"] =  "https://dev-parts.fa-part.com";
        //    oSession.oResponse["Access-Control-Allow-Credentials"] = true;
        }
    }

最新文章

  1. Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
  2. 慎用mutableCopy
  3. [普通平衡树treap]【学习笔记】
  4. android -- 蓝牙 bluetooth (五)接电话与听音乐
  5. iOS多线程的初步研究(七)-- dispatch对象
  6. 学习面试题Day08
  7. 【OpenCV十六新手教程】OpenCV角检测Harris角点检测
  8. 10个精妙的Java编码最佳实践
  9. USB Loader使用心得之游戏名称、简介、背景音乐
  10. hdu 5188
  11. IDEA适合的插件
  12. 初识python爬虫框架Scrapy
  13. 记一次 SSM 分页
  14. 12、Bootstrap中文文档(其它插件分享)
  15. Unity 之 rawimage 与image 的区别
  16. VMware进入BIOS
  17. javascript设计思维
  18. Visio 画图去掉页边距(图形四周的空白区域)的解决办法
  19. tomcat7和jetty启动的pom.xml配置
  20. java分布式集群

热门文章

  1. 修改安卓ID为硬件唯一ID
  2. https://lamp.sh/
  3. listview自定义适配器
  4. opc ua与opc da区别
  5. hdu-2544 最短路(SPFA)
  6. Servlet(服务连接器)
  7. WeNet调试
  8. C# Type类
  9. 【Direct3D 12】什么是Direct3D 12
  10. Android中添加set文件