Fiddler抓包

1 什么是fiddler?

1.1 概念

fiddler是位于客户端和服务器端的HTTP代理,目前最常用的抓包或是web调试工具之一。可以通过fiddler查看浏览器的所有HTTP/HTTPS流量、查看和分析请求内容细节、伪造客户端请求和服务端响应信息、测试网站性能、解密HTTPS的web会话等。

1.2 使用场景

接口调试、接口测试、线上环境调试、web性能分析、判断前后端BUG、开发环境hosts配置、mock测试、弱网断网测试。

1.3 工作原理

客户端和服务器建立了一个HTTP通信过程,如果要监听这个请求,就可以使用例如fiddler这样的代理工具。
在这里插入图片描述谷歌浏览器和IE会默认读取系统代理,fiddler一打开就会设置一个系统代理。

  • Fiddler设置系统代理:

  • 打开Fiddler后代理设置:

  • Fiddler关闭之后的代理设置:

2 HTTP协议

https://blog.csdn.net/qq_38684868/article/details/122182383

3 Fiddler工具详解

在这里插入图片描述

3.1 Fiddler 菜单栏

(1)file 菜单
在这里插入图片描述

  • Capture Traffic:控制是否把Fiddler注册为系统代理,当把Fiddler注册为系统代理时,所有依赖于WinINET代理的应用(如IE浏览器和其他浏览器)会把Web请求发送给Fiddler
  • New Viewer:打开一个新的fiddler窗口
  • Load Archive:加载之前保存好的包
  • Recent Archive:查看最近打开的包
  • Save:保存所有会话,可以针对性选择,比如保存请求的会话,响应的会话,或者仅保存请求头
  • Import Sessions:导入Fiddler导出来的会话格式文件,新版Fiddler还可以导入wireshark抓的数据包文件,还有浏览器导出的格式文件,例如HAR格式等等
  • Export Sessions:导出所有会话或者选中的会话
  • Exit:取消把Fiddler注册为系统代理,并关闭工具栏

(2)Edit菜单
在这里插入图片描述

  • Copy:复制选中Session的某些信息
  • Remove:从Web Session列表中删除全部、删除选中的或未选中的Session
  • Select All:选中Sessions列表的所有内容
  • Paste as Session:基于剪贴板上的内容,生成一个或多个模拟的Web Session
  • Mark:选择一种颜色来标记Web Session列表中选中的Session
  • Unlock for Editing:因为Fiddler抓到包本来是不能被更改的,只有使用了此功能解锁并打开编辑的功能才能对抓到的数据包进行编辑重放
  • Find Session…:选中会话在会话中查找关键字,查找到的关键字默认会被标记为黄色

(3)Rules菜单
在这里插入图片描述

  • Hide Image Request:在会话里面隐藏图片的请求
  • Hide CONNECTS:在会话里面隐藏CONNECTs的请求
  • Automatic Breakpoints:是否会自动在Before Requests或After Responses处设置断点。Ignore Image触发器控制这些断点是否作用于图片请求
  • Customize Rules…:使用配置的脚本编辑器打开当前的FiddlerScript文件,自定义Fiddler
  • Require Proxy Authentication:所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应,要求客户端安装证书,这个规则可用于测试HTTP客户端,确保这些规则在有证书的客户端服务器上可以正常工作。
  • Apply GZIP Encoding:在抓包的过程中启用GZIP编码(只要请求包含具有gzip标识的Accept-Encoding请求头,就会对除了图片以外的所有响应使用GZIP HTTP进行压缩)。该规则用于测试使用GZIP选项支持的客户端是否真正对内容进行压缩。该选项还支持性能调优,并且计算传输的压缩后的数据流的字节数。
  • Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码
    Hide 304s:隐藏包含HTTP/304 Not Modified状态的响应的所有Session
  • Request Japanese Content:把所有请求的Accept-Encoding请求头设置或替换为ja 标识,表示客户端希望响应以日语形式发送
  • User-Agents:把所有请求的User-Agent请求头设置或替换成指定值。
  • Performance:提供影响性能的简单选项。
  • Performance->Simulate Modem Speeds: 模拟调制解调器速度。
  • Performance->Disable Catching:设置禁用缓存。
  • Performance->Cache Aways Fresh:会自动响应所有包含HTTP/304响应的有条件HTTP请求,表示客户端的缓存是最新的。当访问的站点无法正确的设置缓存失效日期时,可以极大的提高性能。

(3)Tool菜单
在这里插入图片描述

  • Options…:打开Fiddler Options窗口,配置Fiddler的各种功能选项,包括代理功能,字体功能,抓包功能,扩展功能等
  • WinINET Options…:打开IE的Internet Options窗口
  • Clear WinINET Cache:清空IE和其他应用中所使用的WinINET缓存中的所有文件
  • Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie,Session的Cookies还是保持不变
  • TextWizard…:启动TextWizard窗口,支持对文本进行编码和解码
  • Compare Session:比较选中的两个会话,使用这个功能需要另外安装工具,只有当选中Web Session列表中的两个Session时才有效。
  • Reset Script:重置Fiddler Script
  • Sandbox:打开Fiddler官方提供的一个沙盒环境:http://webdbg.com/sandbox/
  • View IE Cache:查看IE浏览器的缓存
  • New Session Clipboard…:打开一个Session的剪贴板,用于加载使用Fiddler保存好的Session
  • HOSTS…:打开Fiddler的Host Remapping工具,这个功能不是真的更改本地HOSTS,而是隐射的功能

(3)View菜单
在这里插入图片描述

  • Show Toolbar:Fiddler工具栏是否可见

  • Default Layout:默认布局

  • Stacked Layout:堆叠形式布局

  • Wide Layout:宽版面布局

  • Tabs:查看隐藏的功能点,有Fiddler的属性,自动保存,API测试这三个功能点

  • Statistics:点击此功能会直接到达右边的统计功能位置

  • Inspectors:点击此功能会直接到右边的检查功能位置

  • Composer:点击此功能会直接到达右边的自定义请求的功能点

  • Minimize to Tray:最小化Fiddler到系统托盘中

  • Squish Session Lis:控制Web Session列表是否水平收缩

  • AutoScroll Session list:控制当添加新的Session时,Fiddler是否会自动滚动到Session列表的底部

  • Refresh:刷新

  • step1: Fiddler截获客户端浏览器发送给服务器的https请求,此时还未建立握手。

  • step2: Fiddler向服务器发送请求进行握手,获取到服务器的CA证书,用根证书公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥。

  • step3: Fiddler伪造自己的CA证书,冒充服务器证书传递给客户端浏览器,客户端浏览器做跟Fiddler一样的事。

  • step4: 客户端浏览器生成https通信用的对称密钥,用Fiddler伪造的证书公钥加密后传递给服务器,被Fiddler截获。

  • step5: Fiddler将截获的密文用自己伪造证书的私钥解开,获得https通信用的对称密钥。

  • step6: Fiddler将对称密钥用服务器证书公钥加密传递给服务器,服务器用私钥解开后建立信任,握手完成,用对称密钥加密消息,开始通信。

  • step7: Fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文。再次加密, 发送给客户端浏览器。

  • step8: 客户端向服务器发送消息,用对称密钥加密,被Fidller截获后,解密获得明文。

3.2 Fiddler工具栏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 Fiddler会话列表

(1)抓取到的请求包含的信息
fiddler抓取到的每条HTTP请求(每一条称为一个session),主要包含了请求ID、状态码、协议、主机名、URL、内容类型、body大小、进程信息、备注等。
在这里插入图片描述

  • #:HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增
  • URL:请求的服务器路径和文件名,也包括GET参数
  • Result:HTTP响应的状态码
  • Protocol:请求使用的协议(如http/https/ftp)
  • Host:请求地址的域名
  • Body:请求的大小,以byte为单位
  • Caching:请求的缓存过期时间或缓存控制,header等值
  • Content-Type:请求响应的类型(Content-Type)
  • Process:发出此请求的Windows进程及进程ID
  • Comments:用户通过脚本或者右键菜单给此session增加的备注
  • Custom:用户通过脚本设置的自定义值

(2)会话的颜色
在这里插入图片描述

  • 红色:HTTP状态错误
  • 黄色:HTTP状态认证
  • 灰色:表示数据流类型为CONNECT或表示响应类型为图像
  • 紫色:表示响应类型为CSS
  • 蓝色:表示响应类型为HTML
  • 绿色:表示响应类型为script

(3)列表最左侧图标
在这里插入图片描述
(4)会话列表应用设置

1) 会话列表增加IP:

Fiddler在抓取每个session时,都会调用CustomRules.js脚本文件,该脚本可以隐藏,标识或任意修改session的显示信息。

  • Step1:Rules菜单 —> Customize Rules,打开“Fiddler ScriptEditor”
  • step2: Ctrl+F查找“static function Main()”字符串,然后添加以下代码:
    FiddlerObject.UI.lvSessions.AddBoundColumn(“ServerIP”, 120, “X-HostIP”);

2) 添加自定义列
在标题头上右键:
在这里插入图片描述

  • Search this column:在当前列中搜索内容。
  • Flag duplicates :标记重复项。
  • Hide this column:隐藏此列。
  • Ensure all columns are visible:确保所有列均可见。
  • Customize columns:自定义列。

选择Customize columns:
在这里插入图片描述

3) 添加完成请求时间
Rules菜单 —> Custome Rules,搜索class Handlers。
加在class Handlers里面添加如下代码:

//左侧信息会显示时间
public static BindUIColumn("TimeTaken/ms", 120)
function TimeTaken(oS: Session):String{
    var sResult = "0";
    //获得时间戳的ms值
    var t1_ms = oS.Timers.ClientBeginResponse.ToUniversalTime().Millisecond;
    //获得时间戳的minute值
    var t1_m = oS.Timers.ClientBeginResponse.ToUniversalTime().Minute;
    //获得时间戳的second值
    var t1_s = oS.Timers.ClientBeginResponse.ToUniversalTime().Second;
    var t1 = t1_m*60*1000 + t1_s*1000 + t1_ms ;

    var t2_ms = oS.Timers.ClientDoneRequest.ToUniversalTime().Millisecond;
    var t2_m = oS.Timers.ClientDoneRequest.ToUniversalTime().Minute;
    var t2_s = oS.Timers.ClientDoneRequest.ToUniversalTime().Second;
    var t2 = t2_m*60*1000 + t2_s*1000 + t2_ms ;

    if(t1 >= t2){
        var t3 =  t1 - t2;
        sResult = t3.toString();
    }
    return sResult;
}

4)其他
点击标题头可以按属性值进行升序或者降序排序,默认是按ID排序。
选中标题头进行拖拽,自定义标题头的顺序。

3.4 辅助标签+工具栏

(1)Statistics: 统计分析,HTTP或HTTPS请求的性能和其他数据分析,如DNS解析时间,TCP/TP建立连接的时间(TCP三次握手的时间)、SSL连接的时间(针对https请求)等信息
在这里插入图片描述
(2) Inspectors: 检查器,以不同的形式展示请求或部分请求报文、响应或部分响应报文,操作:选中一条请求,点击Inspectors按钮,或直接双击某一条请求
在这里插入图片描述
1)请求信息:

  • Headers :分类显示请求头信息,包含了 Web 客户端信息、Cookie、传输状态等。
  • Textview:以文本形式显示请求体
  • SyntaxView:以语法格式显示请求体
  • WebForms:以网络表单的形式显示请求体
  • HexView:以十六进制形式显示请求
  • Auth:显示 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息.
  • Cookies:显示Cookes
  • Raw:将整个请求信息显示为纯文本(原生显示)
  • JSON:以Json格式显示
  • XML:以XML格式显示
    2)响应信息:
  • Transformer:显示响应的编码信息
  • Headers:分类显示响应头信息
  • TextView :使用文本形式显示响应体
  • SyntaxView:以语法格式显示响应体
  • ImageVies:如果响应体是图片资源,显示响应的图片
  • HexView:用十六进制数据显示响应
  • WebView:响应在 Web 浏览器中的预览效果
  • Auth:显示Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息。
  • Caching :显示此请求的缓存信息
  • Cookies:显示Cookes
  • Privacy :显示此请求的私密 (P3P) 信息。
  • JSON:以Json格式显示
  • XML:以XML格式显示

(3)AutoResponder: 自动响应器,可用于拦截某一请求,进行如下操作:重定向到本地的资源、使用fiddler的内置响应、自定义响应。
在这里插入图片描述
使用场景:
1)生产环境出现一个问题, 直接修改生产环境的内容,肯定对正在使用的用户产生影响,这个时候可以使用自动响应器拦截这个请求,之后进行重定向到本地或者指定的响应去。
在这里插入图片描述

  • step1:设置要拦截的请求:可以通过点击“add rule”按钮,添加将要拦截的URL,或直接在会话列表中选中请求并拖动到AutoResponder的面板中
  • step2:指定响应:可以设置内置的响应,也可以选择本地作为一个响应
  • step3:勾选Enable rules 以及 Unmatched results passthrough
  • step4:重新该发起请求(需要清空缓存)

2)mock测试(开发人员接口还未开发好,测试人员可通过AutoResponder来模拟请求)

(4)Composer: 一个简单的接口测试工具(发包工具<发HTTP的数据包,发请求报文>、回放工具)
操作:鼠标左键拖动请求的url至右侧Composer面板处,请求信息会自动填充,修改请求参数,点击Execute

(5)Filters:过滤器,忽略不想显示的请求,过滤出想要的请求,是一个多维度的过滤器。过滤器要起作用,必须选中Use Filters
在这里插入图片描述

3.5 命令行/状态栏

在这里插入图片描述

4 Fiddler常用操作

4.1 断点

(1)设置全局断点:
Rules->Automatic Breakpoints 或者直接在命令行状态栏中设置,可设请求前断点和响应后断点。
应用场景:
进行极端测试:应用响应后断点,篡改响应体数据,清空响应体进行极端测试(比如测试一个列表,可能是没有数据的,可通过这种方式清空数据,来查看没有数据时是否有一个友好性的提示; 也可模拟网络中断)

(2)设置局部断点:
通过命令行,
设置请求前断点:bpu
设置请求后断点:bpafter

4.2 弱网测试

step1: Rules->Customize Rules,打开Fiddler ScriptEditor,通过快捷键“Ctrl+F”查找“simulateModem”,自己设置延迟
在这里插入图片描述

step2: Rules->Perfermance->Simulate Modem Speeds

4.3 HTTPS抓包

HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。

(1)捕获Google和IE HTTPS流量(Google和IE读的都是系统的证书,Firefox自己管理自己的证书):

  • step1: Tools->Options->HTTPS,勾选Decrypt HTTPS traffic(解密HTTPS的流量)选项
  • step2: 设置后如果还是抓不到HTTPS的包,在Tools->Options->HTTPS点击Actions,选择Reset All Certificates重置所有证书,根据提示完成所有操作,可以通过Actions->Open Windows Certificate Manager打开Windows的证书管理器,选择"操作->查找证书”,搜索fiddler,查看“DOT_NOT_TRUST_FiddlerRoot”证书是否成功安装
  • step3: 如果还是不行,再设置一下Action->Trust Root Certificate
    在这里插入图片描述
    (2)捕获Firefox HTTPS流量
    除了上述捕获Google和IE HTTPS流量设置外,还需进行如下操作:
  • 打开Firefox设置->常规设置,找到 网络设置,点击“设置”,打开连接设置面板,设置使用“系统代理”,或者“手动配置代理”
    在这里插入图片描述
    另,如果是老版本的Firefox,还需要找到 证书->查看证书->导入证书(在fiddler工具的Tools->Options->HTTPS->Actions->Export Root Certificate to Desktop下载证书)

4.4 APP抓包

  • step1: 点击Tools->Options->Conections,勾选Allow remote computers to connect,重启Fiddler,确保防火墙允许Fiddler进程可以远程连接(可关闭防火墙)
    在这里插入图片描述

  • step2: 移动设备连接WI-FI(需和Fiddler在同一网段),然后对所连接的Wi-Fi设置代理,代理主机名为fiddler所在 主机的IP,代理端口设置为Fiddler监听的端口
    在这里插入图片描述

  • step3: 打开手机浏览器,访问http://FiddlerMachineIP:8888,该地址会返回Fiddler Echo Service页面,点击页面底部的FiddlerRoot Certificate下载证书
    在这里插入图片描述

  • step4: 打开手机设置->找到关于系统安全的设置->加密与凭据->安装证书,安装刚下载的FiddlerRoot Certificate.cer

  • step5: *测试完毕关闭代理,否则手机无法上网

4.5 Fiddler插件

安装fiddler插件:https://www.telerik.com/fiddler/add-ons
willow插件:http://qzonetouch.github.io/commonWidget/willow,学习可访问:https://www.cnblogs.com/hally/p/12637081.html

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
Fiddler是一款流行的网络抓包工具,它可以帮助用户从网络请求中捕获和分析数据。而快手是一款非常流行的短视频分享平台。在回答这个问题之前,我们首先要了解为什么要使用Fiddler抓包快手。 使用Fiddler可以帮助我们深入了解快手与服务器之间的网络通信过程。通过抓包,我们可以观察到快手应用发送给服务器的请求和服务器返回的响应。这包括用户登录信息、视频上传、视频播放、评论发送等。通过分析这些数据,我们可以了解到快手应用与服务器之间的交互细节,以及了解快手应用的数据传输方式和协议。 在使用Fiddler抓包快手时,我们可以首先打开Fiddler并启动其抓包功能。然后打开快手应用,我们会看到Fiddler自动捕获到快手的网络请求和响应。我们可以通过过滤规则,只关注与快手相关的请求,方便数据的分析和观察。例如,我们可以过滤出与视频上传和播放相关的请求,以便分析视频的传输过程和加载速度。 通过抓包快手,我们可以对快手应用的性能进行评估和优化。我们可以观察到网络请求的时间消耗和传输速度,分析出潜在的问题,并提出相应的改进策略。另外,通过抓包我们还可以了解到快手应用的数据加密方式,以及与服务器建立安全连接的过程。 总而言之,Fiddler可以帮助我们抓包快手,获取到快手与服务器之间的网络通信数据,进而深入了解快手应用的工作原理以及优化性能。这对于开发者和网络工程师来说是非常有用的,可以帮助他们改进和优化快手应用的网络性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值