IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Fiddler抓包 -> 正文阅读

[开发测试]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

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:54:32  更:2022-03-22 20:55:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:15:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码