Fiddler 工具手册速览

Fiddler 工具手册速览

一、工具基础介绍

1.1 核心功能定位

Fiddler 是业界领先的 Web 调试代理工具,提供以下核心能力:

  • 全流量捕获:支持 HTTP/HTTPS/WebSocket 等协议的实时抓包
  • 请求篡改:支持修改请求头、请求体、URL 参数等
  • 响应模拟:可构造自定义响应或重放历史请求
  • 性能分析:内置时间轴、瀑布图、大小统计等可视化工具
  • 自动化测试:通过 FiddlerScript 编写自定义规则
  • 移动端调试:支持 iOS/Android 设备代理配置

1.2 工作原理架构

客户端
Fiddler代理
Web服务器
规则引擎
请求拦截
响应修改
会话列表
统计面板

二、核心功能详解

2.1 实时捕获配置

代理设置

  • PC 端
    # Chrome 代理配置
    chrome://settings/search?q=proxy
    设置 -> 高级 -> 系统 -> 打开代理设置
    
  • 移动端
    • iOS:设置 -> WLAN -> 配置代理 -> 手动
    • Android:设置 -> WLAN -> 修改网络 -> 高级选项

捕获过滤器

# 语法:Protocol!Host!URL!StatusCode
HTTPS!example.com!/api/!404

# 高级示例
(HTTP | HTTPS) && (Host: api.example.com || Host: admin.example.com)

2.2 请求篡改技术

手动修改

  1. 在会话列表选择请求
  2. 点击 Inspectors 标签页
  3. 修改 Request Headers/Body
  4. 点击 Run to Completion 发送

自动修改规则

// FiddlerScript 示例:自动添加认证头
if (oSession.HostnameIs("api.example.com")) {
    oSession.oRequest["Authorization"] = "Bearer xxx";
}

批量修改

// 批量修改 User-Agent
oSession.oRequest["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...";

2.3 响应模拟功能

AutoResponder

  1. 启用规则:Enable rules
  2. 匹配条件:
    • EXACT:https://api.example.com/data
    • REGEX:(?insx).*\.png
  3. 响应类型:
    • 200 OK:返回预设响应
    • 404 Not Found:模拟错误
    • *redirect:https://new-url.com:重定向

响应构造

{
  "status": "mock",
  "data": {
    "id": 123,
    "value": "fiddler_mock"
  }
}

2.4 性能分析工具

时间轴分析

  • 关键指标
    • DNS Lookup
    • TCP Connect
    • SSL Handshake
    • Send/Receive
  • 优化建议
    • 并行请求数 > 6:需优化资源加载
    • 首次字节时间 > 800ms:检查服务器响应

瀑布图优化

gantt
    title 页面加载时序
    section 请求1
    DNS      :a1, 20ms
    TCP      :a2, after a1, 40ms
    SSL      :a3, after a2, 60ms
    Send     :a4, after a3, 20ms
    Receive  :a5, after a4, 100ms
    section 请求2
    DNS      :b1, 30ms
    TCP      :b2, after b1, 50ms
    ...

2.5 弱网模拟配置

自定义规则

// 模拟 3G 网络(500ms 延迟,1.5Mbps 下行)
if (oSession.host.toLowerCase() == "api.example.com") {
    oSession["x-overrideDelay"] = "500";
    oSession["x-overrideRate"] = "1500000";
}

预设场景

  • 3G 慢速:延迟 300ms,带宽 768Kbps
  • LTE 良好:延迟 100ms,带宽 15Mbps
  • 卫星连接:延迟 600ms,带宽 256Kbps

三、典型应用场景

3.1 API 调试实战

请求验证

  1. 捕获 /api/login 请求
  2. 修改 password 参数为错误值
  3. 观察返回的 401 Unauthorized

Token 续期

// 自动刷新过期 Token
if (oSession.url.includes("/api/refresh")) {
    let oldToken = oSession.oRequest["Authorization"];
    oSession.oRequest["Authorization"] = "Bearer " + refreshToken(oldToken);
}

3.2 性能优化案例

资源合并

  • 原始请求:12 个 JS 文件,总大小 1.2MB
  • 优化后:合并为 3 个文件,总大小 800KB
  • 效果:请求数减少 75%,加载时间缩短 40%

缓存策略

# 优化前
Cache-Control: no-cache

# 优化后
Cache-Control: max-age=31536000, immutable

3.3 安全测试应用

SQL 注入检测

' OR '1'='1' -- 
  • 特征:参数包含特殊字符
  • 防御建议:参数化查询 + WAF 规则

敏感信息泄露

// 检测密码明文传输
if (oSession.url.includes("/login") && oSession.GetResponseBodyAsString().includes("password")) {
    FiddlerObject.alert("检测到密码明文传输!");
}

3.4 移动端调试

iOS 配置

  1. 设置 -> WLAN -> 配置代理 -> 手动
  2. 服务器:PC 的 IP 地址
  3. 端口:8866
  4. 安装 Fiddler 根证书:http://ipv4.fiddler:8866

Android 配置

# 终端命令(需 ADB)
adb shell settings put global http_proxy 192.168.1.100:8866

四、高级功能集成

4.1 扩展插件生态

常用插件

插件名称功能描述安装方式
FiddlerScript自定义规则编写内置功能,无需安装
Composer手动构造请求右键会话 -> Replay -> Reissue …
Session Rules自动化规则管理Rules -> Customize Rules
JSON InspectorJSON 格式化显示右键会话 -> JSON -> Format

4.2 自动化测试框架

FiddlerScript 示例

// 自动化测试用例
class Handlers {
    static function OnBeforeResponse(oSession: Session) {
        if (oSession.url.includes("/api/data")) {
            let body = oSession.GetResponseBodyAsString();
            if (body.indexOf("error") != -1) {
                FiddlerObject.alert("检测到错误响应!");
            }
        }
    }
}

持续集成

# 命令行调用
Fiddler.exe /a /c:"C:\scripts\test.js" /r:"C:\capture.saz"

4.3 性能调优工具链

与 Chrome DevTools 集成

  1. 启动 Fiddler 代理
  2. Chrome 访问 chrome://net-internals/#events
  3. 对比两者捕获的请求时序

与 JMeter 协同

  1. Fiddler 捕获请求
  2. 导出为 JMeter 脚本(.jmx)
  3. 执行压力测试

五、实战案例分析

5.1 HTTPS 解密

配置步骤

  1. 工具 -> 选项 -> HTTPS
  2. 勾选 Decrypt HTTPS traffic
  3. 导出根证书:Actions -> Export Root Certificate to Desktop
  4. 安装证书到受信任的根证书颁发机构

验证

# 解密后的请求头应包含
Connection: keep-alive
Upgrade-Insecure-Requests: 1

5.2 自动化测试脚本

场景:自动重试失败请求

// 规则配置
if (oSession.responseCode >= 400 && oSession.responseCode < 500) {
    let retryCount = parseInt(oSession["x-retry-count"] || "0");
    if (retryCount < 3) {
        oSession["x-retry-count"] = (retryCount + 1).toString();
        oSession.oFlags["x-AutoRetry"] = "true";
        oSession.utilDecodeRequest();
        oSession.RequestBody = oSession.GetRequestBodyAsString();
        FiddlerApplication.oProxy.SendRequest(oSession.oRequest.headers, oSession.requestBodyBytes, oSession);
    }
}

5.3 移动端性能调优

步骤

  1. 捕获移动端请求
  2. 分析首次渲染时间(FMP)
  3. 优化关键资源:
    • 延迟加载非关键 JS
    • 压缩图片资源(WebP 格式)
    • 启用 HTTP/2 协议

六、常见问题解决

6.1 捕获不到流量

排查步骤

  1. 检查代理设置:工具 -> 选项 -> 连接
  2. 确认证书安装:工具 -> 选项 -> HTTPS
  3. 防火墙放行:允许 Fiddler 通过 Windows Defender 防火墙

6.2 解密 HTTPS 失败

解决方案

  1. 重新安装根证书:工具 -> 选项 -> HTTPS -> Actions -> Reset Certificate
  2. 清除浏览器缓存
  3. 重启 Fiddler 和浏览器

6.3 性能分析不准确

优化建议

  1. 禁用无关扩展:工具 -> 选项 -> 扩展
  2. 调整采样率:工具 -> 选项 -> 性能 -> 采样率
  3. 使用独立实例:Fiddler.exe -noext

七、最佳实践指南

7.1 捕获策略

  1. 使用 Ctrl+F 快速过滤
  2. 对敏感请求标记颜色:右键会话 -> 标签 -> Set Color
  3. 定期清理会话:文件 -> 清除会话

7.2 分析流程

  1. 全局概览:统计面板查看总请求数/大小
  2. 协议分析:查看 HTTPS/WebSocket 占比
  3. 细节审查:Inspectors 标签页检查 Cookie/Token
  4. 性能瓶颈:时间轴定位慢请求

7.3 性能调优

  1. 启用压缩:工具 -> 选项 -> 压缩
  2. 配置自动保存:文件 -> 自动保存 -> 每 5 分钟
  3. 使用 SAZ 格式:文件 -> 另存为 -> Session Archive ZIP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值