作为移动开发者或测试工程师,你一定遇到过这样的场景:App突然报错却找不到原因,接口返回数据异常但服务端坚称没问题,或者想分析竞品的网络请求却无从下手。这时候,抓包工具就是你的"显微镜"。
Fiddler作为老牌抓包工具,我用了8年依然爱不释手。它就像网络世界的监控摄像头,能完整记录手机与服务器之间的所有对话。最近帮团队新人配置环境时,发现很多小伙伴卡在HTTPS解密和证书安装环节,今天就把我的实战经验整理成这份保姆级指南。
第一次打开官网可能会眼花缭乱,目前主要版本有:
我建议从Classic版入手,下载时注意:
bash复制# 检查系统要求
Windows 7及以上
.NET Framework 4.7.2+
英文界面看着头疼?按这个步骤汉化:
Fiddler安装目录\Scripts\Fiddler安装目录\实测发现部分菜单可能仍有英文,这时可以编辑FiddlerTexts.txt自定义翻译。我常用的几个关键术语翻译:
code复制"Session" => "会话"
"Inspectors" => "解析器"
"AutoResponder" => "自动响应"
打开Tools > Options开始关键配置:
Connections标签:
HTTPS标签:
Actions菜单:
注意:如果遇到证书安装失败,可能是权限问题,建议用管理员身份运行Fiddler
以华为手机为例的详细步骤:
bash复制# 电脑端检查IP
ipconfig | findstr "IPv4"
# 手机端测试连通性
ping 电脑IP
常见坑点:
这是最容易出问题的环节,我总结了三重保障:
电脑端:
Android手机:
markdown复制1. 访问 http://电脑IP:端口
2. 下载FiddlerRoot.cer
3. 设置 → 安全 → 加密与凭据 → 安装证书
iOS特殊处理:
markdown复制设置 → 通用 → 关于 → 证书信任设置 → 启用Fiddler根证书
面对海量请求,这样过滤更高效:
text复制*.example.com;!*.google.com
我的常用过滤组合:
Process=SYSTEMNOT Content-Type:image/*修改请求/响应的两种方式:
javascript复制// 在FiddlerScript设置
if (oSession.uriContains("target_api")){
oSession["x-breakrequest"]="";
}
上周就用这招发现了接口参数加密漏洞,成功拦截了未加密的身份证号传输。
Timeline面板藏着这些宝藏信息:
我曾用这个功能优化App启动速度,发现有个第三方SDK的DNS解析竟耗时1.8秒,改用IP直连后启动时间直接降低20%。
症状:"证书不受信任"警告
症状:iOS 15+无法抓包
markdown复制1. 设置 → 通用 → 传输或还原iPhone → 还原网络设置
2. 重新安装证书后重启设备
症状:手机显示无网络
症状:抓不到特定APP流量
markdown复制1. 尝试用JustTrustMe等工具绕过SSL Pinning
2. 在FiddlerScript中添加规则:
if (oSession.HTTPMethodIs("CONNECT")){
oSession["x-replywithtunnel"] = "fake-tunnel";
}
遇到乱码响应时试试这些解码方式:
上周分析某APP时发现响应是gzip压缩的,在Inspectors标签点击"Decode"按钮后,终于看到了明文的业务数据。
用FiddlerScript实现自动修改请求:
javascript复制// 修改所有百度请求的User-Agent
if (oSession.HostnameIs("www.baidu.com")){
oSession.oRequest["User-Agent"] = "MyCustomAgent/1.0";
}
// 模拟慢速网络
if (oSession.uriContains("api/payment")){
oSession["request-trickle-delay"] = "5000"; // 5秒延迟
}
抓包是把双刃剑,务必注意:
敏感数据:
证书管理:
markdown复制- 测试结束后移除手机端的Fiddler证书
- 定期更换Fiddler根证书(Options → HTTPS)
企业级防护:
记得有次在咖啡店测试时,意外抓到了隔壁桌的微信消息(他们连的同一个WiFi),立刻意识到公共网络抓包的风险,现在都会用手机热点来测试。