Fiddler抓包实战:App接口测试从入门到精通

发布时间:2026/7/4 15:12:47

Fiddler抓包实战:App接口测试从入门到精通 1. 项目概述为什么Fiddler是App接口测试的“瑞士军刀”如果你是一名测试工程师、开发人员或者对App内部运作机制充满好奇那么“抓包”这个词你一定不陌生。在App测试尤其是接口测试中抓包工具就像一把手术刀能让你清晰地看到客户端与服务器之间每一次“对话”的细节。而在众多抓包工具里Fiddler以其上手快、功能全、对Windows平台友好而著称堪称入门和日常使用的“瑞士军刀”。我见过很多新手面对接口测试时要么一头扎进Postman里写脚本要么对着开发给的接口文档干瞪眼一旦遇到App端的问题就束手无策。实际上很多问题根源在于客户端发出的请求和服务器返回的响应与我们的预期不符。Fiddler的价值就在于它能让你“看见”这些数据流。无论是查看一个登录请求到底传了什么参数还是模拟服务器返回一个错误响应来测试App的容错能力甚至是模拟弱网环境Fiddler都能在5分钟内帮你搭建起一个直观的调试环境。这篇文章我将带你走一遍用Fiddler进行App接口测试的完整流程。从最基础的安装配置到手机抓包的关键步骤再到如何利用Fiddler的核心功能如断点、AutoResponder进行高效的接口验证和Mock测试。更重要的是我会附上我这些年踩过的坑和总结的“避坑指南”比如为什么安卓高版本系统证书安装总失败为什么有些App的请求抓不到这些经验能帮你节省大量排查时间。我们的目标很明确让你在最短时间内掌握这套能解决80%日常接口测试和调试问题的实战技能。2. 环境准备与核心配置搭建你的抓包“手术台”工欲善其事必先利其器。在开始抓包前我们需要确保Fiddler和测试环境都准备就绪。这个过程看似简单但配置不当往往是新手遇到的第一个拦路虎。2.1 Fiddler的安装与基础界面认知首先你需要从Telerik官网下载Fiddler Classic。注意现在有Fiddler Everywhere版本但对于Windows平台下的深度抓包和脚本定制Classic版本目前仍是功能最强大、社区资源最丰富的选择。安装过程就是典型的“下一步”操作这里不再赘述。安装完成后打开Fiddler你会看到一个功能丰富的界面。对于新手初期只需要关注几个核心区域会话列表Web Sessions List位于主界面中央所有捕获到的网络请求都会以列表形式呈现。每一列都很有用比如Result显示HTTP状态码200成功404未找到等Host和URL告诉你请求去了哪里Body显示数据大小。** inspectors检查器这是你分析请求和响应的“主战场”。选中一个会话右侧会分上下两部分上半部分是请求详情Request下半部分是响应详情Response**。你可以在这里以Headers头部信息、TextView原始文本、WebForms表单数据、JSON结构化数据等多种视图查看内容。一个关键技巧双击会话列表中的某一行会自动激活并定位到Inspectors标签这是最高效的操作方式。QuickExec命令行位于会话列表下方。这是一个效率神器你可以输入help查看所有命令。例如输入cls可以清空当前会话列表输入bpu www.example.com可以对特定域名的所有请求设置断点。状态栏最需要留意的是左下角的捕获开关Capturing。图标亮起显示Capturing表示正在抓包如果没亮则Fiddler没有作为系统代理工作你什么也抓不到。旁边的All Processes可以过滤只抓浏览器的流量或非浏览器的流量。注意首次运行Fiddler时可能会弹出一个关于AppContainer的警告直接点击Cancel即可。这个警告主要影响Windows Store应用和Edge浏览器的抓包对于我们的App测试场景通常无需处理。2.2 解锁HTTPS抓包能力安装信任证书默认情况下Fiddler只能抓取HTTP流量。如今绝大多数App都使用HTTPS进行加密通信因此我们必须让Fiddler能够解密HTTPS流量。其原理是“中间人攻击MITM”Fiddler在客户端和服务器之间扮演一个受信任的中间人它用自己的证书对客户端伪装成服务器对服务器伪装成客户端从而解密流量。配置步骤如下点击菜单栏的Tools-Options...。在弹出的窗口中切换到HTTPS选项卡。勾选最核心的两个选项Capture HTTPS CONNECTs捕获HTTPS连接请求。Decrypt HTTPS traffic解密HTTPS流量。点击Actions按钮选择Trust Root Certificate。这一步是关键它会在你的电脑上安装Fiddler生成的根证书让你的操作系统和浏览器信任Fiddler这个“中间人”。系统会弹出几次安全警告一律选择“是”或“安装”即可。验证是否成功打开浏览器访问https://www.baidu.com。如果在Fiddler的会话列表中能看到该请求并且Inspectors里能清晰看到请求和响应的明文内容而不是乱码说明HTTPS抓包配置成功。2.3 配置手机代理让App流量流向你的电脑要让手机App的流量经过Fiddler我们需要将手机的网络代理设置为运行Fiddler的电脑。前提是手机和电脑必须在同一个局域网连接同一个Wi-Fi。获取电脑的IP地址在Fiddler中将鼠标悬停在工具栏的Online按钮上会显示本机IP。或者在命令行输入ipconfig找到无线局域网适配器的IPv4地址。允许远程连接在Fiddler的Tools-Options...-Connections选项卡中勾选Allow remote computers to connect。记住这里的端口号默认是8888。在手机上设置代理Android/iOS进入已连接的Wi-Fi设置 - 修改网络 - 高级选项 - 代理 - 选择手动。服务器主机名填写你的电脑IP地址。服务器端口填写Fiddler的端口默认8888。在手机上安装Fiddler根证书至关重要这是安卓高版本7.0以上抓包失败的最常见原因。设置代理后用手机浏览器访问http://[电脑IP]:8888例如http://192.168.1.100:8888。你会看到一个Fiddler的调试页面点击页面中的FiddlerRoot certificate链接下载证书。iOS下载后直接安装并在设置-通用-关于本机-证书信任设置中完全信任此根证书。Android情况复杂一些。下载证书后系统会提示你命名并安装。但从Android 7.0开始系统不再信任用户安装的证书除非将证书安装到系统级。对于非Root手机常规App可以抓包但如果App设置了android:networkSecurityConfig网络安全性配置明确只信任系统证书则抓包会失败。一个变通方案对于测试包可以让开发在App的network_security_config.xml文件中添加我们安装的用户证书指纹但这需要开发配合。验证手机抓包完成以上步骤后在手机上打开任意一个App建议先使用浏览器访问一个网页测试观察Fiddler的会话列表。如果出现了来自你手机IP的请求恭喜你环境搭建成功3. 核心抓包实战从“看到”到“看懂”接口数据环境配置好后我们就可以开始实战了。抓包不仅仅是“看到”请求更重要的是“看懂”并利用这些数据。3.1 捕获与分析一个完整的登录接口我们以一个典型的App登录场景为例。打开你的测试App进行登录操作同时在Fiddler中观察。定位目标请求在Fiddler会话列表中你会看到大量请求包括图片、JS、CSS等。我们需要找到登录的接口。通常登录接口的URL路径会包含/login、/signin、/auth等关键词。你也可以通过请求方法POST居多和请求体大小通常比GET请求大来辅助判断。分析请求Request选中疑似登录的会话在右侧Inspectors的WebForms或JSON视图下查看请求体。这里通常包含了用户名username、密码password等字段。特别注意密码是否加密出于安全考虑密码字段很少会以明文传输。你可能会看到一串毫无规律的字符串这是客户端加密后的结果。测试时你需要知道加密规则或者让开发提供一个加密后的测试密码。有哪些额外的参数除了账号密码请求里往往还包含设备标识deviceId、时间戳timestamp、签名sign等。这些是接口安全校验的一部分在后续用Postman等工具模拟请求时必须正确构造。分析响应Response查看Inspectors下半部分的响应。登录成功的响应通常包含一个token令牌或sessionId会话ID以及用户基本信息。状态码Result列应为200。如果登录失败状态码可能是401未授权、400错误请求响应体里会有具体的错误信息如code: 1001, msg: 用户名或密码错误。实操心得利用Fiddler的Filters过滤器功能可以极大提升效率。在Filters标签页勾选Use Filters在Hosts区域选择Show only the following Hosts然后输入你的服务器域名如api.your-app.com。这样会话列表就只会显示与你测试App相关的请求屏蔽了其他无关流量如广告、第三方SDK让你能快速聚焦。3.2 使用AutoResponder进行接口Mock测试这是Fiddler在测试中最强大的功能之一。它允许你拦截特定的请求并返回一个预先准备好的本地文件或手动编辑的响应而无需真正访问服务器。这非常适合用于模拟服务器异常测试App在网络超时、服务器返回500错误等情况下的表现。构造测试数据当后端接口尚未开发完成时前端可以依赖Mock数据进行开发联调。性能测试返回一个超大的响应体测试App的解析和渲染性能。操作步骤捕获一个正常请求先让App正常发起一次请求在Fiddler中捕获到它。拖拽到AutoResponder直接从会话列表中将这个请求拖拽到右侧的AutoResponder标签页的规则列表中。编辑规则和响应在规则列表中你会看到自动生成的匹配规则如EXACT:https://api.example.com/login。勾选Enable rules和Unmatched requests passthrough让不匹配的请求正常通过。在规则的第二列Rule Editor选择Find a file...选择一个你本地准备好的JSON文件作为模拟响应。或者选择*200_PlainText等预设响应然后点击Edit Response在TextView中直接修改响应内容。生效与验证保存规则后在手机上再次触发相同的请求。你会发现请求被Fiddler拦截并立即返回了你预设的响应而不会到达真正的服务器。在会话列表中该请求的Result列会显示200并且有一个特殊的AutoResponder图标。避坑指南使用AutoResponder时一个常见的坑是缓存。App或浏览器可能会缓存之前的响应。如果你修改了Mock规则但App没有生效记得在Fiddler中勾选Rules-Performance-Disable Caching来禁用缓存或者在手机App的设置中清除缓存。3.3 使用断点Breakpoints修改请求与响应如果说AutoResponder是“全自动Mock”那么断点功能就是“半自动调试”。它允许你在请求发送前或响应返回后暂停数据流让你有机会手动修改内容。全局断点点击Fiddler状态栏从左往右第三个空白框。点击一次开启“请求前断点”Before Requests再点一次开启“响应后断点”After Responses再点一次关闭。开启后所有流经Fiddler的请求/响应都会被暂停。精准断点更常用的是针对特定请求设置断点。在QuickExec命令行中输入bpu www.example.com对包含该URL的请求设置请求前断点。bpafter www.example.com对包含该URL的请求设置响应后断点。输入不带参数的bpu或bpafter即可取消。当请求被断点拦截后你可以在Inspectors中直接修改请求参数比如把用户名改成错误的或响应内容比如把成功的code从0改成-1然后点击Run to Completion放行。这非常适合用来测试边界情况和异常流程例如“如果登录请求的密码字段传空了服务器会怎么处理”你可以直接清空密码字段的值然后放行观察服务器的真实响应。4. 进阶技巧与避坑指南应对复杂场景掌握了基础操作你已经能解决大部分问题。但在实际项目中总会遇到一些“刺头”。下面分享几个进阶技巧和对应的避坑方案。4.1 抓不到包排查思路与解决方案这是最让人头疼的问题。你可以按照以下清单逐一排查现象可能原因解决方案Fiddler会话列表为空1. Fiddler未开启抓包Capturing未点亮2. 系统代理被其他软件如VPN、某些安全软件覆盖1. 点击状态栏Capturing图标或按F12。2. 暂时关闭其他代理软件或在Fiddler的Connections设置中更换监听端口如从8888改为8889然后重设手机代理。电脑浏览器能抓手机抓不到1. 手机和电脑不在同一网络2. 手机代理设置错误3. 电脑防火墙阻止了Fiddler端口1. 确认连接同一Wi-Fi。2. 核对电脑IP和Fiddler端口。3. 在Windows防火墙中为Fiddler添加入站规则允许8888端口通信。只能抓到HTTP抓不到HTTPS1. 手机未安装/信任Fiddler证书2. App使用了证书绑定SSL Pinning1. 重新访问http://IP:8888下载并安装证书iOS需在信任设置中启用。2. 这是最棘手的情况。对于测试包可让开发禁用证书绑定。对于线上包需使用Xposed、Frida等高级逆向工具绕过这超出了基础抓包范畴。只能抓到部分App的包1. Android 7.0 的用户证书不被App信任2. App使用了纯TCP/UDP或WebSocket等非HTTP(S)协议1. 将Fiddler证书导入系统分区需Root或配置App的网络安全配置文件。2. Fiddler只能抓HTTP/HTTPS。对于其他协议需要使用Wireshark、tcpdump等更底层的抓包工具。一个关键技巧在Fiddler中打开Log标签页它会记录详细的连接和错误信息。如果手机设置了代理但无法连接这里通常会显示“连接被拒绝”等错误是排查网络问题的重要依据。4.2 处理加密参数与签名现代App接口为了安全普遍会对请求参数进行加密或签名。你在Fiddler里看到的可能是一串毫无规律的signabc123def456...。直接修改这样的请求然后重放Replay几乎一定会失败因为服务器会对签名进行校验。应对策略理解签名规则向开发人员索要或共同梳理签名算法。常见的签名方式是将所有参数按特定顺序拼接加上一个密钥secret然后进行MD5或SHA加密。使用FiddlerScript进行自动化签名这是Fiddler的高级功能。你可以编写JScript.NET脚本在请求发出前OnBeforeRequest函数中根据你修改后的参数动态计算新的签名并替换掉原有的sign字段。这样你修改任何参数签名都会自动更新重放请求就能成功。利用断点先解密后修改如果请求体整体被加密你可以先让请求正常通过一次在Inspectors的TextView中查看服务器解密后返回的明文响应。然后在AutoResponder中直接Mock这个明文的响应绕过加密的请求环节。4.3 模拟弱网络测试App在网络不佳环境下的表现是测试重点。Fiddler可以很方便地模拟弱网。点击Rules-Performance-Simulate Modem Speeds。这会启用一个预设的、模拟古老猫Modem速度的规则延迟很大带宽很低。如果你想自定义网络条件需要编辑自定义规则。点击Rules-Customize Rules...或按CtrlR会打开FiddlerScript文件。搜索m_SimulateModem关键字。你会找到类似下面的代码段if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession[request-trickle-delay] 300; // Delay receives by 150ms per KB downloaded. oSession[response-trickle-delay] 150; }request-trickle-delay每上传1KB数据增加的延迟毫秒。设300表示上传速度约为 1KB / 0.3s ≈ 3.3 KB/s。response-trickle-delay每下载1KB数据增加的延迟毫秒。设150表示下载速度约为 1KB / 0.15s ≈ 6.7 KB/s。你可以修改这些值来模拟不同的网络状况例如4G、3G或极差的2G网络。修改后保存脚本CtrlS规则立即生效。注意事项弱网模拟是全局生效的会影响所有经过Fiddler的流量。测试完成后务必取消勾选Simulate Modem Speeds否则你的网页浏览也会变得奇慢无比。5. 与接口测试流程的整合从抓包到自动化Fiddler抓包不仅是独立的活动它更应该融入整个接口测试流程中。5.1 抓包作为接口文档的补充很多时候开发提供的接口文档可能更新不及时或不完整。这时用Fiddler抓取App实际发出的请求是最准确的“活文档”。你可以将抓到的典型请求和响应通过Fiddler的File-Export Sessions-Selected Sessions...功能导出为SAZ文件或cURL命令直接分享给开发或测试同事作为讨论的依据。5.2 导出为Postman或JMeter用例抓到的接口可以快速导入到专业的接口测试工具中形成可重复执行的测试用例。导出为cURL在Fiddler会话列表右键点击某个请求选择Copy-Copy as cURL。然后打开Postman点击Import选择Raw text粘贴cURL命令即可完美复现该请求的所有细节URL、方法、头信息、请求体。用于JMeter将cURL命令复制后可以使用JMeter的Test Script Recorder功能或者借助第三方工具将cURL转换为JMeter的.jmx脚本。5.3 定位前后端问题当测试发现一个Bug时Fiddler能帮你快速定位问题是出在前端App还是后端服务器。前端问题在Fiddler中看到App发出的请求参数本身就是错误的例如该传数字传了字符串。或者服务器返回了正确的数据但App界面显示错误。后端问题App发出的请求参数正确但服务器返回了5xx状态码服务器错误或者返回的业务状态码code和消息msg不符合预期。网络或配置问题根本抓不到请求或者请求长时间无响应超时。这可能是网络问题、代理配置错误或服务器域名解析失败。通过Fiddler清晰地看到数据流你可以用事实证据与开发沟通而不是模糊地描述“这个功能好像不行”大大提升协作效率。最后关于工具选择常有人问Fiddler和Charles、Wireshark的区别。简单来说Fiddler在Windows平台下对HTTP/HTTPS协议的分析和调试功能最强大、最便捷Charles是跨平台的在Mac上更流行功能与Fiddler类似而Wireshark是网络协议分析器能抓取所有网络层包括TCP/IP、UDP的数据包功能更底层、更强大但上手难度也高得多通常用于排查复杂的网络协议问题。对于日常的App接口测试Fiddler或Charles已经完全够用。我个人习惯在Windows上用Fiddler它的脚本扩展和社区资源让我能处理很多定制化场景。记住工具是死的人是活的。掌握Fiddler的核心原理和操作逻辑结合具体的测试需求灵活运用你就能让这把“瑞士军刀”在接口测试的各个场景下游刃有余。

相关新闻