一、环境准备与基础配置
1.1 安装与首次启动
在Windows系统完成安装后,Fiddler会自动注册为系统代理(默认端口8888)。首次启动时需注意:
- 抓包状态指示:界面左下角显示”Capturing”表示正在捕获流量,点击可切换暂停/继续状态
- 会话列表解析:主界面分为请求列表(含URL、状态码、协议类型等列)、详情面板(Headers/WebForms/JSON等标签页)、统计信息区三部分
- 过滤规则设置:通过Filters选项卡可配置主机名、端口、进程ID等过滤条件,提升分析效率
1.2 代理模式选择
Fiddler提供三种核心工作模式:
- 默认模式:仅捕获本机流量(127.0.0.1)
- 全局代理模式:通过
FiddlerCore库实现程序级代理(需代码集成) - 反向代理模式:在Rules→Customize Rules中修改
OnBeforeRequest脚本实现请求转发
二、跨设备抓包配置详解
2.1 电脑端代理设置
- 开启远程连接:Tools→Options→Connections→勾选
Allow remote computers to connect - 防火墙配置:确保8888端口在入站规则中开放
- IP获取:通过
ipconfig命令获取局域网IPv4地址(避免使用127.0.0.1)
2.2 移动端配置流程
Android设备:
- Wi-Fi高级设置→手动代理→输入电脑IP和8888端口
- 浏览器访问
http://电脑IP:8888下载FiddlerRoot证书 - 设置→安全→加密凭证→从存储设备安装证书
iOS设备:
- 配置相同代理设置
- 访问
http://电脑IP:8888下载证书 - 设置→通用→关于本机→证书信任设置→启用根证书
常见问题处理:
- 证书不受信任:检查设备日期时间是否正确
- 连接超时:确认电脑防火墙设置及Wi-Fi子网是否一致
- HTTPS抓包空白:需在Fiddler中重新安装证书(Actions→Reset All Certificates)
三、HTTPS解密技术实现
3.1 解密原理
通过中间人攻击(MITM)技术,Fiddler在客户端与服务器之间建立两个独立SSL连接:
- 向客户端出示伪造证书(由Fiddler根证书签发)
- 与服务器建立标准SSL连接
- 实时解密/加密转发数据
3.2 配置步骤
- 启用HTTPS解密:Tools→Options→HTTPS→勾选
Decrypt HTTPS traffic - 证书管理:
- 导出根证书:Actions→Export Root Certificate to Desktop
- 证书格式转换:使用OpenSSL将.cer转换为.pem格式(
openssl x509 -inform der -in fiddlerroot.cer -out fiddlerroot.pem)
- 移动端特殊配置:
- Android需将证书放入
/system/etc/security/cacerts/目录(需root权限) - iOS需通过配置描述文件方式安装证书
- Android需将证书放入
3.3 安全注意事项
- 仅在调试环境使用解密功能
- 生产环境禁止使用Fiddler证书
- 定期更新Fiddler以获取最新安全补丁
- 敏感操作建议在虚拟机环境中进行
四、高级调试技巧
4.1 API请求模拟
- 请求重放:选中会话→右键Replay→可修改参数后重新发送
- 自动响应:AutoResponder选项卡可配置规则:
EXACT
//api.example.com/data -> 本地文件或预设响应
- 请求修改:通过FiddlerScript(JScript.NET)实现动态修改:
static function OnBeforeRequest(oSession: Session) {if (oSession.uriContains("api.example.com")) {oSession.oRequest["X-Debug-Token"] = "12345";}}
4.2 性能分析
- 时间轴分析:Statistics选项卡显示各阶段耗时(DNS解析/TCP连接/请求发送等)
- 流量统计:通过Filters→Show only the following Hosts可聚焦特定域名
- 重复请求检测:使用
oSession.utilFindInRequest("param", false) > -1脚本标记重复请求
4.3 安全检测
- 敏感信息扫描:通过正则表达式匹配信用卡号、API密钥等:
Regex: \b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})\b
- 中间人攻击测试:修改
OnBeforeResponse脚本注入测试代码:if (oSession.uriContains("login")) {oSession.utilDecodeResponse();oSession.body = oSession.body.replace(/"success":true/,'"success":false, "error":"Session expired"');oSession.utilEncodeResponse();}
五、最佳实践建议
-
工作流优化:
- 使用FiddlerCollections管理常用规则
- 通过
FiddlerObject.log记录关键操作 - 配置
QuickExec命令行(如cls清屏,bpu设置断点)
-
团队协作:
- 导出会话为SAZ格式共享
- 使用
FiddlerScript实现标准化调试流程 - 配置
FiddlerCore实现自动化测试集成
-
性能调优:
- 关闭非必要监控项(如Composer面板)
- 限制会话缓存数量(Rules→Performance→Max TLB Size)
- 使用64位版本处理大流量场景
通过系统掌握上述技术要点,开发者可构建完整的网络调试能力体系,有效提升接口开发效率、缩短问题定位周期,并增强应用安全性。建议结合实际项目场景进行针对性练习,逐步形成个性化的调试工作流。