暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Fiddler 笔记

山卡la 2021-06-08
219



Fiddler 工具

bilibili视频教程链接https://www.bilibili.com/video/BV1c4411c7zH

Fiddler

  • Fiddler是位于客户端和服务器端的HTTP代理

  • web调试的利器

    • 监控浏览器所有的HTTP/HTTPS流量

    • 查看、分析请求内容细节

    • 伪造客户端请求和服务器响应

    • 测试网站的性能

    • 解密HTTPS的web会话

    • 全局、局部断点功能

    • 第三方插件

  • 场景使用

    • 接口调试、接口测试、线上环境调试、web性能分析

    • 判断前后端bug、开发环境hosts配置、moc、弱网断网测试

Fiddler 作用

  1. 简单接口测试

  2. 发包

  3. 重放(重发)请求


抓包原理

B/S架构:客户端/服务器

通过 Intenet属性-局域网LAN 修改开启 系统代理 服务器进行监听抓取

修改端口:Tools ->  Connections -> Fiddler listens on port

修改系统代理:修改开启系统代理:Tools ->  Connections -> 勾选 Act as system                          proxy on startup      

菜单栏

Rules 规则

名称描述
Hide CONNECTs是否隐藏建立通道的连接(建议开)
Hide 304s(建议开)
Automatic Breakpoints自动断点
Performance弱网测试

Customize Rules...:脚本的设置,自定义规则(可添加列)

  • IP列:添加至 static function Main

    FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");
  • 服务器web环境:添加至 static function Main

    FiddlerObject.UI.lvSessions.AddBoundColumn("Server Env", 50, "@response.server");
  • 响应时间:添加至 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;
    }


Tools 工具

名称描述
快捷键
Config...选项
Clear WinINET Cache清除IE缓存Ctrl + Shift + X
Clear WinINET Cookies清除IE cookie
TextWizard...编码解码Ctrl + E
Reset Script重置脚本配置
HOSTS快捷系统设置


工具条

Winconfig:系统配置

配置windows应用程序,是否要抓取对应应用程序包

添加备注

给请求条目添加备注信息,测试中可对接口出现的问题添加至对应条目中,方便清楚的描述对应接口

Replay:重放请求

通过Fiddler 重新发送请求

  • 快捷键:

R键:可以重放一次请求

Shift:输入框输入重放次数可以多次重放请求(重放攻击,也可做压力测试)

delete:删除请求

shift + delete:选择要保留的请求,删除其他所有请求

清除

Remove all:清除所有

Images:清除图片

CONNECTs:清除请求的中间连接

Non-200s:清除 状态码非200 的请求

Non-Browser:清除非浏览器请求

Duplicate response bodies:清除重复响应

ctrl + x:清除所有请求

GO

用于断点,继续下一步

状态栏:     

点击一次:请求前断点

Stream:

流模式,流数据

Decode

解码

Keep:All sessions

保持 会话 数量(会话是占用内存的)

Any Process

选择要监听的应用程序,对其进行抓包请求

Find

查找:Ctrl + F

Save

保存导出会话为 .saz 文件

截图

计时

Browse

快捷打开浏览器

Clear Cache

清除 IE 缓存

TextWizard

文本 编码\解码 工具 快捷键:ctrl + E

Tearoff

分离面板

MSDN Search

微软开发者网站的搜索

Online

本机的在线信息(包含本机IP地址)


面板

名称
界面介绍
Session面板

Fiddler 抓取的每条HTTP请求(每一条称为一个session)主要包含请求的ID编号、Result(状态码)、Protocol(协议)、Host(主机名)、URL(统一资源定位符路径)、Body(请求发送内容大小)、Caching(是否有缓存)、Content-Type(内容类型)、Process(进程信息)、Comments(自定义备注等信息)、Custom(自定义添加列)
命令行   状态栏

Capturing:正在处于代理功能(可快捷设置系统代理)

All Processes:只显示...进程

状态栏:      

点击一次:请求前断点

点两次:响应后断点(响应停留在Fiddler,下一步后才返回响应到客户端)

辅助标签

工具

Statistics(统计)Inspectors:检查器

辅助标签、工具

Statistics(统计)

HTTP 请求的性能和其他数据分析,如DNS解析的时间,简历TCP/IP连接的时间消耗等信息

Inspectors(检查器)

检查请求  

        1. 请求报文

        2. 响应报文


AutoResponder(重要)

可用于拦截某一请求,进行如下操作

  1. 重定向到本地的资源

  2. 使用Fiddler的内置响应

  3. 自定义响应

    应用场景:模拟请求、修改响应内容做极端测试

Composer(设计请求)

可发包、做接口测试


FidderScript

增加Session面板列的调整和增加

Filters(过滤器)

多维度过滤器,过滤请求,勾选 Use Filters  开启过滤器

Hosts
  • Show only Intranet Hosts:只展示局域网的请求

  • Show only Internet Hosts:展示广域网的请求

  • Hide the following Hosts:隐藏指定主机

  • Show only the following Hosts:只展示指定主机

  • Flag the following Hosts:标记指定的主机

Client process
  • Show only traffic from:只抓取某个进程的包

  • Show only Internet Explorer traffic:只抓取IE浏览器的包

  • Hide traffic from Service Host:隐藏来自某个服务主机的包

Request Headers
  • Show only if URLcontains:只展示URL包含了的 指定的内容

  • Hide if URl contains:隐藏URL包含了的 指定内容

  • Flag requests with headers:标记请求头包含了的 指定内容

  • Delete request headers:删除请求中指定的请求头内容

  • Set request header:设置每个请求自动添加指定的请求头内容

Breakpoints(设置断点)
  • Break request on POST:中断 POST 的请求

  • Break request on GET with query string:中断 查询GET 的请求

  • Break on XMLHttpRequest:中断 异步ajax 的请求

  • Break response on Content-Type:中断 内容类型为指定的内容类型 的请求

Response status Code
  • Hide success (2xx):隐藏 200

  • Hide non-2xx:隐藏非 200

  • Hide Authentication demands(401,407):隐藏 401、407

  • Hide redirects(300,301,303,307):隐藏重定向 300,301、303、307

  • Hide Not Modefied(304):隐藏缓存 304

Response Type and Size
  • Show all Content-Types:展示所有内容类型

  • Show only HTML:只展示响应内容类型为 HTML

  • Show only IMAGE/*:只展示响应内容类型为 IMAGE

  • Show only TEXT/CSS:只展示响应内容类型为 TEXT/CSS

  • Show only SCRIPTS:只展示响应内容类型为 SCRIPTS

  • Show only XML:只展示响应内容类型为 XML

  • Show only JSON:只展示响应内容类型为 JSON

  • Hide IMAGE/*:隐藏内容类型为 IMAGE

  • Time HeatMap:根据时间的不同设置session背景色

  • Block scriptfiles:隐藏 响应类型为 scriptfiles

  • Block image files:隐藏 响应类型为 image文件

  • Block SWF files:隐藏响应类型为 SWF文件

  • Block CSS files:隐藏响应类型 CSS文件

  • Hide smaller than:响应内容小于 多少时隐藏

  • Hide larger than:响应大于 多少时隐藏

Response Headers
  • Flag responses that setcookies:标记设置了cookie的响应

  • Flag responses with headers:标记响应包含某个header

  • Delete responseheaders:删除响应头(发给客户端之前删掉)

  • Set response header:设置每个请求自动添加响应头


断点

全局断点快捷设置

Rules --> Automatic Breakpoints描述
Before Requests请求前断点(F11)
After Responses响应后断点(Alt + F11)
Disabled断点失效(Shift + F11)

点击一次:请求前断点

点击两次:响应后断点

点击三次:失效

请求前断点:从客户端发送请求到Fidder后被中断还未发送到服务器

响应后断点(模拟网络中断):从服务器返回响应到Fidder后被中断还未发送到客户端


局部断点

命令行描述
命令
bpu(匹配内容字符串或URL)bpu请求前断点bpu login
bpu login 后 再次输入 bpu取消请求前断点bpu loginbpu
bpafter响应后断点bpafter login
bpafter 后 再次输入 bpafter取消响应后断点bpafter loginbpafter


弱网测试

  • Rules -->  Performance  -->  Simulate Modem Speeds:模拟网络限速

    修改了 Customize Rules...  脚本配置

    m_SimulateModem = True; // 修改为True
    if (m_SimulateModem) {
       // Delay sends by 300ms per KB uploaded.
       oSession["request-trickle-delay"] = "300"; // 请求前 延迟 300毫秒1KB
       // Delay receives by 150ms per KB downloaded.
       oSession["response-trickle-delay"] = "150"; // 响应后 延迟 150毫秒1KB
    }

    Tools --> Reset Script:重置脚本配置


HTTPS抓包

Tools  >  Fiddler Options  >  HTTPS:勾选 Decrypt HTTPS Traffic  |  Ignore server certificate errors(unsafe)

Google、IE 抓HTTPS包

配置安装证书,一路点击 确定、是、ok、yes  

  • 管理计算机证书:Open Windows Certificate Manager

    查找搜索关键字 Fiddler 是否安装  DO_NOT_T...

Firefox HTTPS 抓包

菜单  >  选项  >  高级  >  网络  >  设置

  1. 选择使用系统代理

  2. 手动设置代理(注意需配置正确)

Firefox 需单独安装证书

  1. Tools  >  Options  >  HTTPS  >  Actions  >  Export Root Certificate to Desktop 导出证书

  2. 菜单  >  选项  >  高级  >  证书  >  查看证书  >  导入 上一步导出的 Fiddler 证书  >  信任证书(勾选三项)>  OK


APP 抓包

对 IOS APP 抓包

  • HTTP 抓包

    1. 主机:电脑IP地址

    2. 端口:默认8888

    1. Tools  >  Options  >  Connections  >  勾选 Allow remote computers to connect:允许远程主机连接

    2. 重启 Fiddler

    3. 确保防火墙运行 Fiddler 进程可以远程连接

    4. IOS 设备连接WIFI 与 电脑 IP 是在同一网段下

    5. 确保iso设备可以访问 电脑IP:8888

    6. 设置  >  本机和手机需在同一网络  >  WIFI  >  打开手机连接的 WIFI 网络详情  >  设置代理

  • HTTPS 抓包

    1. 继HTTP 抓包步骤后

    2. 打开手机浏览器  >  地址栏输入  电脑IP地址:8888  >  点击 FiddlerRoot certificate 下载证书(安装证书也不一定能抓到所有包,原因系统或者APP防抓包)

    3. 手机打开安装证书(不知道在哪设置上百度搜索:你的手机怎么安装证书) >  选择安装下载 的 Fiddler 根证书

    4. 手机设置  >  证书信任设置  >  信任安装的证书


对 Android APP 抓包

  1. 设置  >  本机和手机需在同一网络  >  WIFI  >  打开手机连接的 WIFI 网络详情  >  设置代理

    1. 主机:电脑IP地址

    2. 端口:默认8888

  2. Tools  >  Options  >  Connections  >  勾选 Allow remote computers to connect:允许远程主机连接

  3. 无法抓包可能证书有问题

    打开手机浏览器  >  地址栏输入  电脑IP地址:8888  >  点击 FiddlerRoot certificate 下载证书(安装证书也不一定能抓到所有包,原因系统或者APP防抓包)

    手机打开安装证书(不知道在哪设置上百度搜索:你的手机怎么安装证书) >  选择安装下载 的 Fiddler 根证书


安装 Fiddler 插件

Fiddler 插件下载中心:https://www.telerik.com/fiddler/add-ons

文章转载自山卡la,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论