Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端。使用了Fiddler之后,web客户端和服务器的请求如下所示:

Fiddler工具的安装较为简单,从官网下载安装包,按照软件的安装向导即可完成安装,就不再详述了。

1、代理模式

Fiddler的代理模式可以分为缓冲模式(buffering)和流模式(streaming),默认情况下是缓冲模式。

缓冲模式:http请求的所有数据都准备好之后,才会返回给客户端,可以控制最后服务器的响应。

流模式:可以实时把服务器数据返回给客户端,更接近于浏览器本身真实的行为。

2、使用场景

  • 配置开发环境的HOSTS

通常情况下,配置host需要改系统文件,很不方便。Fiddler提供了相对高效的host配置方法。

  • 前后端接口测试

在界面中通过不同的请求方式,发送需要的数据,测试接口是否可以正常使用,不需要写大量的JavaScript代码来测试接口。个人更倾向于在项目代码中给接口发送请求,在浏览器的开发工具中查看接口的返回情况,看个人习惯吧。

  • 定位线上bug

可以将发布上线的文件代理到本地,快速定位线上bug。将已经线上发布的文件代理到本地,再次发送请求的时候便不会再请求线上的该文件,而是直接请求本地的代理文件,通过修改本地的文件,查看线上bug是否修复。

  • 性能分析和优化

Fiddler提供跟请求性能相关的信息,清晰明了。

3、常用的操作

  • 会话的回放

选择会话列表中的一个请求,点击菜单栏中的“Replay”按钮或者快捷键R,可以再次发送该请求。

  • 清空会话

在会话列表中随便点击一个请求,快捷键Ctrl+x或者菜单栏中的x标志的remove功能。

  • 修改HOSTS

  • Fiddler把服务器端的文件代理到本地

在监控面板的右侧点击”AutoResponder“选项卡,选择”Enable rules“前面的复选框,把监控面板中已经发出的请求中需要代理的文件的链接拖动AutoResponder面板中,然后设置返回的结果,返回的结果可以是不同的状态码或者本地文件,再次发出请求时,Fiddler不会把请求代理到服务器,而是返回设置好的响应结果。方便测试在本地的修改是否解决了线上的bug。

  • 使用composer选项卡实现前后端联调

把监控面板中的请求拖动到Composer面板中(或者在Composer面板中手动填写请求),可以修改请求的各种参数,然后点击“Execute”,在监控面板的会话中查看返回的结果,通过传入不同的参数来向服务器发送不同的请求。

使用get方式的时候,参数是加载url后面的,使用post方式,要把参数添加在Request Body中各个参数之间用&连接。

目前在工作中也只是用到了上面的这些操作,其他操作慢慢再摸索吧。

如有问题,欢迎留言(・∀・)

Fiddler的学习之路的更多相关文章

  1. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  2. jQuery学习之路(1)-选择器

    ▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...

  3. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  4. RPC远程过程调用学习之路(一):用最原始代码还原PRC框架

    RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经常使用. rpc的实现方式有很多,可以通 ...

  5. webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

    webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...

  6. [精品书单] C#/.NET 学习之路——从入门到放弃

    C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...

  7. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  8. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  9. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

随机推荐

  1. tarfile — Read and write tar archive files

    参考: https://docs.python.org/2/library/tarfile.html http://www.jianshu.com/p/bbad16822eab #解压文件tarfil ...

  2. VS 提升代码辨识度 (工欲善其事必先利其器)新手开发必备!

    VS简化编译.提高生产 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...

  3. NYOJ 12:喷水装置(二)(贪心,区间覆盖问题)

    12-喷水装置(二) 内存限制:64MB 时间限制:3000ms 特判: No 通过数:28 提交数:109 难度:4 题目描述: 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n ...

  4. HPU第四次积分赛-L:A Winged Steed(完全背包)

    A Winged Steed 描述 有n种千里马,每一种都有若干匹,第i种马的颜值ai​,价格di​.现有m个牧马人要去挑选千里马,每一位牧马人对马的颜值都有要求:{所选马的颜值总和} ⩾Ai​.现在 ...

  5. 洛谷 P1164:小A点菜(DP/DFS)

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...

  6. mvc core2.1 Identity.EntityFramework Core 注册 (二)

    Startup.cs-> Configure app.UseAuthentication(); //启动验证 Controllers->AccountController.cs 新建 us ...

  7. json/pickle模块(序列化)

    什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏.想 ...

  8. Spring Boot 揭秘

    SpringBoot基础 微服务 解决大一统的服务化架构的问题 代码冲突问题 交付复杂,影响面大 测试困难 微服务的好处 可扩展性 隔离性 灵活性,多语言多技术生态 微服务的挑战 保持微服务的互通性 ...

  9. Go Example--数组

    package main import "fmt" func main() { //定义一个数组并完成初始化,初始值为对应的零值 var a [5]int fmt.Println( ...

  10. day16 Hbase day17

    这个HBase学习了第二遍也不是太透彻PS:启动Hbase之前先启动Zookeeper.HDFS.yarn 1. hbase简介(是基于HDFS.相当于是一个缓存层) 1.1. 什么是hbase(列式 ...