抓包工具:Fiddler

一、Fiddler的安装步骤

1、下载安装包

  • 打开官方下载页面:https://www.telerik.com/download/fiddler
  • 根据需求选择版本:
    • Fiddler Classic(免费版,支持 Windows)
    • Fiddler Everywhere(跨平台付费版,有免费试用)
    • 本文以 Windows 平台的 Fiddler Classic 为例

2、安装流程

  • 双击下载的安装程序(如FiddlerSetup.exe)
  • 选择安装语言
  • 阅读并接受许可协议
  • 选择安装位置(默认:C:\Program Files (x86)\Fiddler2)
  • 选择开始菜单文件夹
  • 选择附加任务(推荐勾选 “创建桌面快捷方式”)
  • 点击 “安装” 开始安装
  • 安装完成后点击 “完成” 退出安装向导

3、首次启动配置

  • 首次启动时,Fiddler 会自动配置代理:
    • 自动将 IE/Edge 的代理设置为127.0.0.1:8888
    • 其他浏览器需手动配置代理
  • HTTPS 解密配置:
    • 打开菜单栏:Tools → Fiddler Options
    • 切换到HTTPS选项卡
    • 勾选Decrypt HTTPS traffic
    • 点击Actions → Reset All Certificates
    • 按提示安装根证书(需管理员权限)
    • 注意:安装证书后需信任该证书才能正常解密 HTTPS 流量

4、移动端配置(可选)

  • 确保电脑和移动设备在同一局域网
  • 查看 Fiddler 的监听地址:
    • 打开Tools → Fiddler Options → Connections
    • 记录Listen on port(默认 8888)
  • 配置移动设备代理:
    • iOS:设置 → Wi-Fi → 选择当前网络 → HTTP 代理 → 手动
    • Android:设置 → Wi-Fi → 长按当前网络 → 修改网络 → 高级选项 → 代理 → 手动
    • 服务器:电脑 IP 地址
    • 端口:Fiddler 监听端口(默认 8888)
  • 安装移动设备证书:
    • 在移动设备浏览器访问:http://ipv4.fiddler:8888
    • 点击 “FiddlerRoot certificate” 下载证书
    • 按设备提示安装并信任证书

5、验证安装

  • 启动 Fiddler,观察主界面的Web Sessions列表
  • 打开浏览器访问任意网站,查看 Fiddler 是否捕获到 HTTP/HTTPS 请求
  • 若能看到请求记录,则安装成功

6、常见问题处理

  • HTTPS 无法解密:
    • 确认证书已正确安装并信任
    • 检查浏览器是否使用了独立的证书存储(如 Chrome)
  • 移动设备无法连接:
    • 检查电脑防火墙是否允许 Fiddler 通过
    • 确认设备和电脑在同一网络
    • 尝试临时关闭防火墙测试
  • 性能问题:
    • 使用过滤器(Filters选项卡)减少不必要的会话捕获
    • 定期清除会话列表(Ctrl+X)

二、Fiddler的功能特点

1、全流量捕获与分析

  • 支持协议广泛

可捕获客户端与服务器之间的 HTTP/HTTPS、FTP、WebSocket 等协议流量,实时显示请求和响应的完整数据,包括:

  1. - 请求信息:URL、方法(GET/POST 等)、请求头、请求体、CookieUser-Agent 等。
  2. - 响应信息:状态码、响应头、响应内容(如 HTML/JSON/ 图片等)、服务器返回时间等。
  • 可视化会话列表

通过主界面的 Web Sessions 列表,可直观查看所有捕获的会话,支持按 状态码、域名、URL、耗时 等条件排序和筛选,快速定位目标请求。

2、请求与响应调试

  • 实时编辑修改
    • 请求阶段:可拦截请求并修改参数、请求头(如伪造 User-Agent 模拟不同设备)、请求体(测试接口异常参数)等,再发送至服务器。
    • 响应阶段:可修改服务器返回的内容(如篡改 HTML/JSON 数据),用于调试前端展示逻辑或模拟异常响应。
  • 断点功能
    • 全局断点:通过 Rules → Automatic Breakpoints 设置 请求前(Break on Request) 或 响应前(Break on Response) 断点,拦截所有匹配请求。
    • 单个会话断点:右键单击会话,选择 Breakpoints → Break request/response,仅拦截指定会话。

3、性能分析与优化

  • 请求耗时统计

通过 TimeLine 面板 展示每个请求的详细耗时分布,包括:

  1. - DNS 解析时间、TCP 连接时间、服务器处理时间(TTFBTime to First Byte)、内容下载时间等。
  2. - 支持生成瀑布图,直观呈现资源加载顺序和阻塞点,帮助优化页面加载性能。
  • 性能报告

内置 Statistics 面板,自动计算请求总数、总流量、平均耗时等指标,并提供 性能优化建议(如压缩资源、缓存策略调整等)。

4、弱网环境模拟

  • 自定义网络参数

通过 Rules → Customize Rules 或 工具栏按钮(如 Simulate Modem Speeds),模拟不同网络条件:

  1. - 带宽限制:设置上传 / 下载速度(如模拟 2G/3G/4G 网络)。
  2. - 延迟(RTT):模拟高延迟场景(如移动端弱信号环境)。
  3. - 丢包率:模拟网络不稳定导致的数据包丢失,测试应用的容错能力。
  • 场景化测试

用于验证应用在弱网下的加载逻辑、重试机制、用户体验等,避免线上环境因网络问题导致故障。

5、HTTPS 解密与证书管理

  • HTTPS 流量捕获

通过安装 Fiddler 根证书,解密 HTTPS 流量,查看加密传输的内容(需用户授权)。

  • 证书管理
    • 内置证书生成工具,可一键安装 / 重置根证书(路径:Tools → Options → HTTPS → Actions)。
    • 支持导出证书至移动端或其他设备,实现跨平台 HTTPS 抓包(如测试手机 APP 的加密接口)。

6、灵活的过滤与会话管理

  • 多维度过滤

通过 Filters 面板,按以下条件筛选会话:

  1. - 域名(Host):只显示特定域名的请求(如 api.example.com)。
  2. - URL 路径:过滤包含指定字符串的 URL(如 /api/)。
  3. - 请求方法:仅显示 GET/POST 等特定方法的请求。
  4. - 状态码:过滤成功(2xx)、重定向(3xx)、错误(4xx/5xx)的响应。
  • 会话标记与分组

可对会话标记颜色、添加备注,或通过 Find 功能快速搜索关键字,提升复杂场景下的调试效率。

7、脚本扩展与插件生态

  • FiddlerScript 编程

基于 JScript.NET 或 C# 编写自定义脚本,实现自动化处理逻辑,例如:

  1. - 自动修改请求头(如添加签名参数)。
  2. - 批量重定向 URLurlreplace 规则)。
  3. - 统计接口调用频率、生成自定义报告。
  • 插件扩展

支持安装第三方插件(如 FiddlerAutoResponder、JSONFormater),增强功能:

  1. - AutoResponder:一键将请求映射到本地文件或模拟响应,用于 mock 数据。
  2. - JSONFormater:格式化 JSON 响应内容,提升可读性。

8、跨平台与多设备支持

  • 桌面端:原生支持 Windows,通过插件或配置可在 macOS/Linux 系统间接使用(如搭配 Charles 代理)。
  • 移动端:通过代理配置(手机与电脑同局域网),捕获 iOS/Android 应用的网络流量,支持安装移动证书解密 HTTPS。
  • 其他设备:可捕获平板、智能电视、物联网设备等的网络请求,适用于全场景测试。

9、安全与调试辅助

  • 安全测试

通过修改请求参数(如越权访问令牌、注入恶意代码),测试系统的安全性(如防范 SQL 注入、XSS 攻击等)。

  • 调试辅助工具
    • Composer:手动构造请求,用于快速测试接口(类似 Postman)。
    • Inspectors:多格式解析响应内容(如 JSON/XML/ 图片 / 原始字节流),方便查看二进制数据或多媒体内容。

三、Fiddler的使用场景

1、Web 开发与调试

  • 接口调试与问题排查
    • 捕获前端与后端 API 之间的请求和响应,检查参数传递是否正确、返回数据格式是否符合预期。
    • 定位接口调用失败的原因(如 404/500 错误、跨域问题、认证失败等)。
    • 修改请求参数或响应内容,测试边界条件(如空值、超长字符串、特殊字符)。
  • 性能优化
    • 通过 TimeLine 分析页面资源加载顺序和耗时,找出阻塞点(如慢加载的 JS/CSS 文件)。
    • 监控 TTFB(Time to First Byte),评估服务器响应速度。
    • 分析 HTTP 缓存策略(查看 Cache-Control、ETag 等头信息),优化资源缓存。
  • 前端调试
    • 模拟不同浏览器 / 设备的请求头(如 User-Agent),测试响应式布局。
    • 篡改服务器返回的 HTML/JSON 数据,快速验证前端渲染逻辑。

2、移动端应用测试

  • App 接口测试
    • 配置手机代理到 Fiddler,捕获 iOS/Android 应用的网络流量,分析接口调用逻辑。
    • 验证移动应用与服务器之间的数据传输是否安全(如敏感信息加密)。
  • 弱网环境测试
    • 启用网络限速功能,模拟 2G/3G/4G/WiFi 环境,测试应用在不同网络条件下的表现(如加载超时、数据重试机制)。
  • HTTPS 流量分析
    • 通过安装手机证书解密 App 的 HTTPS 请求,查看加密通信内容(如登录信息、支付数据)。

3、API 测试与自动化

  • 接口自动化测试
    • 使用 FiddlerScript 编写脚本,批量发送测试请求并验证响应结果。
    • 结合 AutoResponder 功能,mock 服务器响应,实现无依赖的单元测试。
  • 压力测试准备
    • 录制真实用户请求,导出为测试脚本(如 JMeter/Postman 格式),用于后续压力测试。

4、安全分析与渗透测试

  • 安全漏洞检测
    • 修改请求参数尝试 SQL 注入、XSS 攻击等,测试系统安全性。
    • 分析敏感信息泄露风险(如 Cookie 未设置 HttpOnly、明文传输密码)。
  • 认证与授权测试
    • 篡改认证令牌(如 JWT、SessionID),验证系统权限控制逻辑。
    • 测试 CSRF(跨站请求伪造)防护机制。

5、性能监控与优化

  • API 性能分析
    • 统计接口响应时间分布,找出性能瓶颈接口。
    • 分析 API 调用频率和资源消耗,优化服务器配置。
  • 资源优化
    • 检查静态资源(图片、JS、CSS)是否压缩,是否使用 CDN 加速。
    • 验证 HTTP/2 特性(如多路复用、头部压缩)是否生效。

6、Mock 数据与灰度发布

  • 本地开发 Mock
    • 使用 AutoResponder 将特定请求映射到本地文件,实现前端与后端的解耦开发。
    • 模拟不同环境(开发 / 测试 / 生产)的响应数据。
  • 灰度发布测试
    • 针对部分用户请求返回新版本接口数据,验证新功能稳定性。

7、协议分析与逆向工程

  • 自定义协议解析
    • 分析私有协议的通信格式(如游戏客户端与服务器的交互)。
  • 第三方服务调试
    • 捕获与第三方 API(如支付、地图服务)的通信过程,排查集成问题。

8、其他场景

  • 网络流量监控
    • 监控企业内部网络应用的流量模式,识别异常请求(如爬虫、恶意攻击)。
  • 合规性检查
    • 验证应用是否符合安全标准(如 PCI-DSS、GDPR),确保敏感数据加密传输。
  • 技术选型评估
    • 对比不同 API 方案(如 REST vs GraphQL)的性能和资源消耗。