抓包工具: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 等协议流量,实时显示请求和响应的完整数据,包括:
- 请求信息:URL、方法(GET/POST 等)、请求头、请求体、Cookie、User-Agent 等。
- 响应信息:状态码、响应头、响应内容(如 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 面板 展示每个请求的详细耗时分布,包括:
- DNS 解析时间、TCP 连接时间、服务器处理时间(TTFB,Time to First Byte)、内容下载时间等。
- 支持生成瀑布图,直观呈现资源加载顺序和阻塞点,帮助优化页面加载性能。
- 性能报告
内置 Statistics 面板,自动计算请求总数、总流量、平均耗时等指标,并提供 性能优化建议(如压缩资源、缓存策略调整等)。
4、弱网环境模拟
- 自定义网络参数
通过 Rules → Customize Rules 或 工具栏按钮(如 Simulate Modem Speeds),模拟不同网络条件:
- 带宽限制:设置上传 / 下载速度(如模拟 2G/3G/4G 网络)。
- 延迟(RTT):模拟高延迟场景(如移动端弱信号环境)。
- 丢包率:模拟网络不稳定导致的数据包丢失,测试应用的容错能力。
- 场景化测试
用于验证应用在弱网下的加载逻辑、重试机制、用户体验等,避免线上环境因网络问题导致故障。
5、HTTPS 解密与证书管理
- HTTPS 流量捕获
通过安装 Fiddler 根证书,解密 HTTPS 流量,查看加密传输的内容(需用户授权)。
- 证书管理
- 内置证书生成工具,可一键安装 / 重置根证书(路径:Tools → Options → HTTPS → Actions)。
- 支持导出证书至移动端或其他设备,实现跨平台 HTTPS 抓包(如测试手机 APP 的加密接口)。
6、灵活的过滤与会话管理
- 多维度过滤
通过 Filters 面板,按以下条件筛选会话:
- 域名(Host):只显示特定域名的请求(如 api.example.com)。
- URL 路径:过滤包含指定字符串的 URL(如 /api/)。
- 请求方法:仅显示 GET/POST 等特定方法的请求。
- 状态码:过滤成功(2xx)、重定向(3xx)、错误(4xx/5xx)的响应。
- 会话标记与分组
可对会话标记颜色、添加备注,或通过 Find 功能快速搜索关键字,提升复杂场景下的调试效率。
7、脚本扩展与插件生态
- FiddlerScript 编程
基于 JScript.NET 或 C# 编写自定义脚本,实现自动化处理逻辑,例如:
- 自动修改请求头(如添加签名参数)。
- 批量重定向 URL(urlreplace 规则)。
- 统计接口调用频率、生成自定义报告。
- 插件扩展
支持安装第三方插件(如 FiddlerAutoResponder、JSONFormater),增强功能:
- AutoResponder:一键将请求映射到本地文件或模拟响应,用于 mock 数据。
- 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)的性能和资源消耗。