1.前言

  今天的理性认识主要就是讲解和分享 Fiddler 的一些理论基础知识。其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler。

1.1 工作场景

做 app 测试,你是否有过这样的经历?

1.后端开发同事在调试解决 bug 时 ,总找你拿着手机点点点,然后他在后台看数据是否异常。(一个上午,一不小心过去了)

2.前端开发同事在调试解决 bug 时,也找你过来帮忙造几个数据,于是你辛辛苦苦造了个数据,他点一下,数据用完了,bug 没解决。于是乎又找你造数据。(一个下午,又一不小心过去了)

3.你曾经是否遇到过这种情况,当你发现一个 bug 提交给前端开发时,他说是后端返回数据的问题。于是你找到后端开发,他说是前端数据提交的问题,让你找前端开发。(一个晚上过去了,bug 没解决。。。)

这个时候就有请我们的主角-Fiddler 开始闪亮登场。前边这些他可以通通解决。

温馨提示:全程干货、内容比较多,建议新手朋友可以先点赞+收藏再慢慢观看! 😇

2.简介

  在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及。许多电脑高手 经常利用 Fiddler 可以作为代理的这个功能去抓取会话并进行修改达到自己想要的目的。Fiddler 是一个强大并且跨平台的 HTTP(S) 抓包神器,你可别拿去做坏事。它的英文名叫:Fiddler,中文名叫:小提琴。Fiddler 是一个 HTTP 协议调试代理工具。它能够记录并检查所有你的电脑和互联网之间的 HTTP、FTP、HTTPS 的数据包。通过设置断点,用户还可以修改 “进出” Fiddler 的数据。由于 Fiddler 具备强大的数据抓包和修改功能,所以 Fiddler 广泛应用 Web 渗透测试领域。

Fiddler 是最强大最好用的 Web 调试工具之一, 它能记录所有客户端和服务器的 http 和 https 请求。允许你监视、设置断点、甚至修改输入输出数据。Fiddler 包含了一个强大的基于事件脚本的子系统,并且能使用.net 语言进行扩展。换言之,你对 HTTP 协议越了解,你就能越掌握 Fiddler 的使用方法。你越使用 Fiddler,就越能帮助你了解 HTTP 协议。Fiddler 无论对开发人员或者测试人员来说,都是非常有用的工具。

Fiddler 是以 web proxy 代理服务器的形式工作的 , 它也是一个 http 协议数据抓包与调试代理工具,它能够记录和检查当前你的电脑和互联网之间的 http 消息, 也就是说可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作 还可以用来检测网络安全。

3.抓包

  抓包(packet capture):用特定的工具获取客户端与服务端发送和返回的数据包。目的是分析数据包的内容与协议,从而来判断是否符合设计要求。其实就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全

4.什么情况下需要抓包?

1.开发要你重现 bug,截取数据,定位问题的时候

2.判断一个问题是前端 bug 还是后端 bug 的时候

3.开发要你做接口测试,但又不没给你接口文档的情况--》方法,接口地址,传递参数,头部,返回内容

4.在不修改任何环境的情况下,修改返回的结果,即通常说的 mock--》模拟接口

5.为什么要学习 Fiddler?

宏哥从三个角度给小伙伴们或者童鞋们来解剖一下:

5.1Fiddler 本身优势

1、功能强大,其他工具有的功能它也有,其他工具没有的功能它也有,支持 http,https,ftp 等协议;

2、完全免费,长期免费。

3、所有的浏览器可以使用,所有的平台都可以使用。就冲着这三点,就值得拥有。

5.2 同类产品对比

除了 Fiddler 还有哪些能抓包?

抓包工具:wireshark、fiddler、httpwatch、charles、chrome 开发者工具 (F12),各工具的对比,

说到抓包工具,有 Fiddler、Charles、HttpWatch、WIRESHARK 等知名、不知名的......当然工具没有强弱好坏之分,只是看在什么场景下使用更为适合!Fiddler 和同种类型的抓包工具对比,如下图所示:

从上图我们可以看出:我们为什么选择 Fiddler 进行抓包,可以看一下它的比较。

  首先第一个 Fiddler 它的优势,独立运行,第二个支持移动设备(是否能抓移动 APP 的包,)在这一块的话 wireshark、httpwatch 就不支持,因此在这一块就可以排除掉前连个,因为我们有时候去进行测试的时候,除了测 web 端,也会要去测 app 端,在企业里经常去要做的事情。

  然后 Fiddler 是免费的,charles 是收费的。当然我知道大家都能够各显神通,做坏事的时候,记得带上你的负罪感。

  当然你选择这个免费工具的前提是,它满足你的需求,能够解决你的问题,并不是说我随便找一个不能解决我问题的工具,这个肯定是不行的,至于说在这一块想去用一下 wireshark、httpwatch 可以自行去下载使用,我们今天主要分享 Fiddler。(需要软件测试相关安装包,可以微信公众号主页点击领取资料,安装包,教程都给你准备好了,免费)

5.3 用户

  在测试中,不管是做手工测试,还是接口测试,我们都需要查看后端返回的数据。有的时候,我们也需要调试,或者 mock 一下后端的返回,来验证前端是否达到预期。为了捕获这些请求,抓包工具不可少。熟练掌握一些抓包工具,可以方便我们测试,调试,分析问题。

  不管是在开发、还是在测试阶段中,“抓包” 都是定位 bug 的主要方法之一。特别是当你提交 bug 给对应的开发同学,如果没有 “铁证”,他们通常都拒绝修改。甚至还会高傲的对你说 “你抓个包看看,是不是后台或者接口的问题啊,憋有事没事给我提 bug~”。这个时候,Fiddler 就可以帮助你快速打脸回去了~当然,打脸不是目的,帮助开发同学快速精准的定位 bug 原因,才是王道!

6.Fiddler 是什么?

那么 Fiddler 究竟是什么?能干什么呢?

《度娘宝典》如是说:
  Fiddler 是一个 http 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 http 通讯,设置断点,查看所有的 “进出” Fiddler 的数据(指 cookie,html,js,css 等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露 http 通讯还提供了一个用户友好的格式。

6.1 宏哥推荐的原因  

1.安装配置简单,快速上手(别说咸鱼,菜鸟都会~);基本功能强大,新手必备(简直不要太好用~);

2.能记录所有客户端(PC 端和手机客户端)和服务器间的 Http 和 Https 请求,可监视、设置断点、修改 response 和 request,模拟低速网速环境,还能够使用.net 框架语言扩展)

7.Fiddler 支持和不支持的功能

  宏哥经常会遇到的一些小伙伴或者童鞋们的私信或者留言的问题类似于:“宏哥,我可以使用 Fiddler 来完成 XXX 吗?Fiddler 适用于很多场景中。但是,对于一些场景,Fiddler 是不合适的。绝大多数情况下,人们所使用的是 Fiddler 的少数几个功能。一下将简单说明 Fiddler 所适用的场景。

7.1Fiddler 支持功能的不完整列表

1.查看几乎所有的浏览器、客户端应用或者服务之间的 web 数据流。监控我们浏览器所有的 http/https 的信息和流量,也就是所有的请求或者响应,所有的流量都可以监听。

2.手动或者自动修改任意的请求或者响应。当监听截取到 http 请求之后,就可以做一些查看 分析浏览器请求的内容细节,就可以伪造一些请求 伪造一个服务器的响应都是可以的!

3.解密 https 数据流以便查看和修改

4.归档捕获到的数据流,支持不同计算机上加载这些数据

5.给客户端应用 “回放(play back)” 先前捕获到的响应,即使当前服务器处于脱机状态。

6.绝大多数 PC 和各种设备之间的 Web 数据流的调试,包括 Mac/Linux 系统、智能手机和平板电脑。

7.挂接到(chain to)上游代理服务器,包括 TOR 网络(TOR 是专门防范对流量探嗅分析的软件项目。它通过由遍及全球的中继所组成的分布式网络转发通信,可以实现匿名访问网络。)

8.还可以测试网站的性能

9.作为反向代理运行,在不需要配置客户端计算机或者设备的情况下,在服务端捕获的数据流。

10.全局、局部断点功能!

11.第三方插件

7.2Fiddler 不支持功能的不完整列表

Fiddler 是一个非常灵活强大的工具,但某些功能目前还不支持。

1.调试非网络协议数据流

(1)Fiddler 支持 HTTP、HTTPS 和 FTP 数据流以及相关协议,如 HTML5 WebSockets 和 ICY 流。

(2)Fiddler 无法监测或修改基于其他协议的数据,如 SMTP、POP3、Telnet、IRC 等。

2.处理超大请求和响应

(1)超过 2GB 的请求,Fiddler 无法处理

(2)超过 2GB 的响应,Fiddler 的处理能力有限

(3)Fiddler 使用系统内存和页面文件(pagefile)来保存会话数据。保存大量的会话或者超大的请求和响应会导致性能急剧下降。

3.“神奇” 地修复网站的错误(bug)

(1)Fiddler 可以用来协助识别网络问题,但通常不能独立修复这些 bug。

8.Fiddler 应用场景

Fiddler 的应用场景也很广泛,具体应用场景如下:

1.接口调试

2.接口测试

3.线上环境调试

4.web 性能分析

5.判断前后端 bug

6.开发环境 hosts 配置

7.mock 模拟测试

8.弱网断网测试

要知道 Fiddler 作为系统代理,所有的来自互联网服务的 http(https)请求在到达目标 Web 服务器之前都会经过 Fiddler,同样的,所有的 Http(https)响应都会在返回客户端之前也会经过 Fiddler。

9.Fiddler 部署

9.1Fiddler 环境部署

1.下载 Fiddler,官方下载地址:https://www.telerik.com/download/fiddler填写好电子邮箱和国家地区 点击 Download for windows 就可以下载了。如下图所示:

2.安装:傻瓜式安装,一直点下一步,直达完成为止。安装成功会显示如下界面,如下图所示:

9.2Fiddler 更新

1.Fiddler 在启动时,会自动查询是否有新版本。当发现有新版本时,会有更新提示。如下图所示:

2.点击 “Yes” 按钮,Fiddler 会启动浏览器,下载最新的安装程序。下载完成后,关闭正在运行的 Fiddler,手动安装新下载的程序。如果点击的是 “Next Time” 下一次安装这个按钮,下一次启动 Fiddler 时,它会自动下载安装最新版本。如果点击 “No”,弹出的对话框就会关闭,不会安装新的版本,下一次启动 Fiddler 时,还会弹出这个提示。

3.Fiddler 提示更新,傻瓜式更新,一直点下一步,直达完成为止。更新成功会显示如下界面,如下图所示:

9.3Fiddler 退出

可能有的小伙伴觉得没有必要介绍 Fiddler 退出,这么简单我直接关闭不就直接退出了,但是有时候你的退出操作却是不正常的退出操作,这个就会产生一系列的问题。当 Fiddler 是以代理服务器形式工作的,默认 ip 地址是 127.0.0.1:8888,如果 Fiddler 是非正常退出,那么仍会占用端口,导致其他网页访问失败,因此大家退出 Fiddler 的时候,要点击 File,点击 Exit,正常退出 Fiddler,而不是直接点击右上角的叉号关闭。如下图所示:

9.4Fiddler 卸载

可以使用控制面板中的 “添加/删除” 来卸载 Fiddler。卸载后,系统并不会被清理干净,因此卸载无法解决配置问题。

10.Fiddler 工作原理

  在介绍 fiddler 使用方法之前,我想先介绍一下 fiddler 原理,明白原理后,使用起来会更得心应手。

  Fiddler 是位于客户端和服务器端之间的 HTTP 代理, 它能够记录客户端和服务器之间的所有 HTTP(S) 请求,可以针对特定的 HTTP(S) 请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。
  Fiddler 在客户端与服务器之间建立一个代理服务器,Fiddler 工作于七层中的应用层,能够捕获通过的 HTTP(S) 请求。Fiddler 启动后会自动将代理服务器设置成本机,默认端口为 8888。Fiddler 不仅能记录 PC 上浏览器的网络请求数据,还可以记录同一网络中的其他设备的 HTTP(S) 请求数据。数据传递流程大致如下图所示:

  由上图可以看出,Fiddler 使用代理方式,让客户端所有数据流都发给它,然后由 fiddler 转发给目标 server,目标 server 的回包发给 fiddler,再由 fiddler 转发给客户端。所以不管是 Request 还是 Respone 数据包都经过了 fiddler,fiddler 能进行截获和分析。正是他这样架构优势,才有其其他工具无法做到的强大功能,其不光是支持这些IE, Chrome, Safari, and Opera浏览器的抓包,还支持一些客户端的 http(s) 抓包,前提是这些 client 支持 http 代理配置。

10.1 图解

1) 客户端向服务器发送 HTTP(S) 请求时,请求会先经过代理 Fiddler 代理服务器。
2) Fiddler 代理服务器截取客户端的请求报文,再转发到服务器,转发之前可以做一些请求报文参数修改的操作。
3) 服务器处理完请求以后返回响应报文,Fiddler 代理服务器会截取服务器的响应报文。
4) Fiddler 处理完响应报文后再返回给客户端。

Fiddler 的原理简单点说就是通过改写 HTTP 代理然后让网络数据从 Fiddler 这边通过 这样子来监控并且截取到网络信息数据。当你打开 Fiddler 的时候, 就已经设置好了浏览器的代理了。当你关闭的时候,它会自动的帮你把代理还原。这里还要清楚一点的就是 浏览器默认走的是我们的系统代理,其实这里的代理监听 就是在 请求和响应之间插了一脚, 让 fiddler 成为系统代理。

1.在你安装好 Fiddler 之后启动,并可以打开菜单栏中的 *Tools--->options--->Connections * ,如下图所示:

2.从上图可以看到:有一句Act as system proxy on startup意思就是 (在启动时充当系统代理),并且默认监听端口设置为了 8888。Fiddler 就是一个中间的 proxy(代理服务器),如下图所示:

3.查看自己电脑系统是否在启动 Fiddler 后,开启了代理,如下图所示:

4.当正常退出 fiddler 的时候,再次查看系统手动设置代理选项就会被清空并关闭,如下图所示:

11.小结

注意:这个 Fiddler 工具是基于.NET Framework 的 ,因为 Fiddler 是 c# 开发的,如果是比较老的 windows 系统要保证运行环境!☺️Fiddler 的安装方法也很简单 获取到安装包之后,直接选择安装路径 或 无脑下一步就可以了!☺️

Fiddler 是以代理 WEB 服务器的形式工作的,浏览器与服务器之间通过建立 TCP 连接以 HTTP 协议进行通信,浏览器默认通过自己发送 HTTP 请求到服务器,本地使用代理地址:127.0.0.1, 端口:8888.而当 Fiddler 开启会自动设置系统代理, 正常退出的时候它会自动注销代理,这样就不会影响别的程序。但是如果 Fiddler 非正常退出,这时可能会因为 Fiddler 没有自动注销,而会造成网页无法访问。

解决的办法是重新启动下 Fiddler,然后正常退出就可以了, 这也是有很多新手安装了 Fiddler 之后导致一些网络无法访问的原因之一。


↙↙↙阅读原文可查看相关链接,并与作者交流