Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下

作者头像
北京-宏哥
发布于 2022-08-19 06:55:22
发布于 2022-08-19 06:55:22
1.8K0
举报
文章被收录于专栏:Fiddler教程Fiddler教程北京宏哥

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之后导致一些网络无法访问的原因之一。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言】内存管理&&内存管理函数&&文件管理&&文件管理函数
实际上普通的局部变量是在栈区分配空间的,栈区的特点时在上面创建的变量出了作用域就销毁
用户10925563
2024/06/04
5040
【C语言】内存管理&&内存管理函数&&文件管理&&文件管理函数
C语言——动态内存管理与内存操作函数
主要是系统用于自动分配给全局变量、static修饰的变量内存的。它们在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。
星辰与你
2024/10/17
1590
C语言——动态内存管理与内存操作函数
这些基础不要瞧不上——C的内存操作函数
在C/C++编程中,内存操作是至关重要的一环。合理使用内存操作函数不仅能提升程序的性能,还能提高代码的稳定性和安全性。本文将介绍几种常用的内存操作函数,包括malloc、calloc、realloc、free、memset、memcpy和memmove等,并提供相应的示例代码。
程序员的园
2024/11/25
2290
这些基础不要瞧不上——C的内存操作函数
了解内存函数
内存函数不止malloc、calloc、realloc、free还有memcpy、memmove、memset、memcmp。前四个的头文件是<stdlib.h>,后四个的头文件是<string.h>。
秋邱
2024/10/09
1420
了解内存函数
从 C++ STD::VECTOR的RESIZE和RESERVE看VECTOR的源码实现
https://www.cnblogs.com/yocichen/p/10574819.html https://www.kancloud.cn/digest/stl-sources/177267
早起的鸟儿有虫吃
2022/01/20
2.1K0
从 C++ STD::VECTOR的RESIZE和RESERVE看VECTOR的源码实现
【c语言】详解动态内存管理
在学习c语言时我们知道数据结构通常是固定大小的。就拿数组举例,一旦程序完成编译,那么数组的大小及元素的个数就确定了。那么在不修改程序并且再次编译程序的情况下就无法改变数据结构的大小。总结就是下面两个特点:
用户11029269
2024/03/19
1340
【c语言】详解动态内存管理
C /C++标准库 - <cstdlib>(stdlib.h)
standard library标准库头文件,是一个大杂烩,定义和声明一些没有明显的归属的宏和函数。
用户7886150
2021/02/15
1K0
【C语言】动态内存管理之4个内存函数`malloc`,`free`,`calloc`和`realloc`深度了解
本小节,我们学习动态内存管理:为什么要有动态内存分配?4个动态内存开辟函数:malloc,free,calloc和realloc,这些C标准库中的内存管理函数都声明在在 stdlib.h 头⽂件中。干货满满!学习起来吧😃!
学习起来吧
2024/02/29
5110
【C语言】动态内存管理之4个内存函数`malloc`,`free`,`calloc`和`realloc`深度了解
【C语言】动态内存函数介绍
返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。
大耳朵土土垚
2024/03/13
1050
【C语言】动态内存函数介绍
C语言动态内存管理
在C语言编程中,动态内存管理是一项核心技能,它允许程序在运行时灵活地分配和释放内存。相比于静态内存分配,动态内存分配能够更有效地处理不确定或变化的数据大小,极大地增强了程序的灵活性和效率。然而,动态内存管理也带来了一些挑战,如内存泄漏、越界访问和悬挂指针等问题。掌握这些动态内存管理的基本概念和技术,对于编写高效、稳定的C程序至关重要。在本文中,我们将深入探讨C语言中的动态内存管理,包括其基本概念、相关函数以及使用时的注意事项。帮助你更好地管理和优化程序的内存。
平凡之路.
2024/10/09
1750
C语言动态内存管理
深入挖掘C语言 ----动态内存分配
C语言提供了另外一个函数free, 专门是用来做动态内存释放和回收的, 函数原型如下:
用户11317877
2024/10/16
1340
深入挖掘C语言 ----动态内存分配
【C语言基础】:内存操作函数
注意:memcpy函数不可以拷贝重叠的内存块(虽然也能实现)但不安全,对于重叠的内存块,memmove是一种更安全的方法。
爱喝兽奶的熊孩子
2024/04/10
1200
【C语言基础】:内存操作函数
C语言内存函数超详解
C语言为我们提供了字符串的一些函数,比如复制,比较等等,但是这些函数只能用在字符串上,而C语言的数据类型显然不止字符串一种,那应该怎么办?难道要把每一种数据类型都包装几个函数供我们使用吗?显然这太过臃肿。 为了解决这个问题,C语言在string.h库中提供了内存函数供我们使用。
fhvyxyci
2024/09/24
1310
C语言内存函数超详解
[C++] 深度剖析C_C++内存管理机制
定位new表达式语法:void* operator new(size_t, void* place) noexcept { return place; }
DevKevin
2024/07/25
1610
[C++] 深度剖析C_C++内存管理机制
回溯1:动态内存管理与C语言实践
在C语言中,内存管理是一个非常重要的部分,尤其是动态内存管理。程序在运行时所需的内存大小往往是未知的,因此无法依赖编译时的静态内存分配。在这种情况下,动态内存管理成为程序员处理复杂数据结构时的有力工具。本篇文章将详细讲解C语言中的动态内存管理原理、常用函数及其典型应用,并通过相关代码示例来论证。
用户11289931
2024/11/24
3820
动态内存分配
                                                               2.数组在申明的时候,必须指明数组的长度,它所需要的                                                                    内存在编译时分配。
see.
2024/06/04
2730
动态内存分配
C语言——内存函数【memcpy,memmove,memset,memcmp】
🔍重点提取: ①所在头文件:string.h ②函数原型: ●void * memcpy ( void * destination, const void * source, size_t num ); ●destination(目标空间),source(源头),num(字节个数) ③函数功能: ●从source指向的位置开始向后复制num个字节的数据到destination指向的位置 ④注意: ●函数在遇到\0的时候不会停止 ●如果要复制num个字节,那么source和destination的数组大小至少为num字节 ●如果source和destination的内存块有重叠,那复制的结果是未定义的(有重叠的时候,最好用memmove)
用户11029137
2024/03/19
6300
C语言——内存函数【memcpy,memmove,memset,memcmp】
C语言从入门到实战——动态内存管理
在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。
鲜于言悠
2024/03/20
3680
C语言从入门到实战——动态内存管理
c语言进阶部分详解(详细解析动态内存管理)
上篇文章介绍了枚举,联合相关的内容,大家可以点击链接进行浏览:c语言进阶部分详解(详细解析自定义类型——枚举,联合(共用体))-CSDN博客
是Nero哦
2024/01/18
1560
c语言进阶部分详解(详细解析动态内存管理)
深入探索C语言动态内存分配:释放你的程序潜力
如果我们要用这个数组来存储数据的话只能存储100个char型的数据,如果再想要往数组内添加数据的话就会越界。
DevKevin
2024/03/24
2390
推荐阅读
相关推荐
【C语言】内存管理&&内存管理函数&&文件管理&&文件管理函数
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档