尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Fiddler抓包实战:从代理原理到HTTPS解密与接口调试
提到抓包工具很多搞开发、做测试的朋友第一个想到的肯定是Fiddler。我在不同项目里用它做接口联调、移动端调试、性能分析加起来也有好多年了。有人会把名字写成Fidder其实官方拼法是Fiddler但大家都知道说的是同一个工具。简单来说抓包就是把客户端和服务器之间跑的HTTP/HTTPS流量完整记录下来必要时还能修改参数重新发送。当你本地接口一直报错、App调接口死活看不到真实返回、或者想确认后端到底吐了什么数据时Fiddler都能让你很快把问题摸清楚。这篇内容适合刚接触抓包的开发同学、测试工程同学也适合偶尔需要排查线上问题的运维朋友我把日常用得最多的操作路径、配置细节和踩过的坑一起整理出来照着走基本就能上手。1. 先搞明白Fiddler到底是个什么角色1.1 一台本地代理服务器Fiddler本质上是一个运行在你本机的HTTP代理服务。默认情况下它监听本机的8888端口启动后会自动把自己设置成Windows系统代理于是浏览器发出去的HTTP请求都会先经过Fiddler再由Fiddler转发给目标服务器服务器返回的数据也会先回到Fiddler再交还给浏览器。这个链路看起来简单但意义很大浏览器/App → Fiddler8888端口 → 服务器 浏览器/App ← Fiddler8888端口 ← 服务器因为请求和响应都要从Fiddler这里过一遍它就有机会把内容留下来给你看也可以中途拦截修改。你可以把它理解成快递公司中转站包裹还是那个包裹但中转站可以拆开检查、拍照记录甚至换个包装再送出去。当然能不能拆开加密包裹就是后面要聊的HTTPS解密问题了。1.2 Fiddler与同类工具的取舍我经常被问到“抓包到底该学Fiddler还是Charles还是Wireshark”这里先做个对比工具定位上手难度适用场景亮点Fiddler ClassicHTTP/HTTPS调试代理低Web、App、接口联调免费功能集成度高支持断点、AutoResponder、脚本扩展Fiddler Everywhere跨平台版的Fiddler低macOS、Linux、Windows界面更现代化但部分功能收费CharlesHTTP/HTTPS调试代理低macOS开发者居多界面简洁Mac上体验很好付费Wireshark网络协议分析中高底层网络排查、TCP/UDP分析能看到网卡上几乎所有协议流量和Fiddler互补浏览器DevTools内置开发者工具低前端页面调试只看本浏览器流量看不到App和其他进程我个人的选择思路是日常Web开发和App调试首选Fiddler因为它免费、抓包能力足够、还能做断点改包需要看TCP握手、DNS解析这类底层数据时再切到Wireshark。如果你用Mac为主Charles确实是个好选择但Windows阵营用Fiddler更顺。工具没有绝对好坏关键是你能熟练用它解决实际场景里的问题。2. 抓包原理与HTTPS解密机制2.1 HTTP为什么一抓一个准HTTP协议在传输过程中是明文。请求行、请求头、请求体、响应体都是普通文本代理服务器转发时可以直接读取。所以Fiddler抓HTTP请求基本不需要额外配置启动就能看到域名、路径、参数、Cookie、返回内容全部都是明明白白的。这也是为什么很多接口测试、爬虫调试前期都先用HTTP协议做验证——因为链路透明出问题容易定位。2.2 HTTPS为什么默认抓不到明文HTTPS和HTTP最大的区别在于数据经过了TLS加密。客户端和服务器在正式传输数据前会先建立TLS隧道后续所有内容都是加密的密文。Fiddler作为中转站能看到的是一个加密隧道入口和一个加密隧道出口至于隧道里面传了什么它并不知道。用一个场景来类比你写了一张明信片是HTTP邮局中转站随便看内容你把明信片装进带锁信封并走TLS加密通道邮局中转站只能看到信封表面信息看不到正文。想要看清正文中转站必须能打开这把锁。2.3 中间人解密到底怎么运作Fiddler的解密方案走的是“中间人”方式核心在于它给自己生成了一根根证书Fiddler Root Certificate。当你勾选并信任这根根证书后Fiddler对每个HTTPS站点都会动态生成一张对应域名的临时证书。这张临时证书的签发者是Fiddler根证书而你的设备和浏览器已经信任了Fiddler这个“证书签发机构”所以就会信任这些临时证书。整个流程拆开看是这样客户端发起HTTPS请求到FiddlerFiddler返回自己的临时证书客户端验证临时证书发现签发者是已信任的Fiddler根证书校验通过于是和Fiddler之间建立了一层TLSFiddler同时向真实服务器发起HTTPS请求和服务器建立另一层TLS客户端发给服务器的密文被Fiddler用第一层密钥解开变成明文Fiddler看完甚至改完再用第二层密钥加密发给服务器服务器响应也一样Fiddler解密后再加密回给客户端。简单说就是“客户端的加密由Fiddler承接服务器的加密也由Fiddler承接中间有一段是明文”。“中间人”这个词听起来有点吓人但Fiddler是被你主动信任和安装的所以它是你手里的调试工具。真正的攻击场景是证书被偷偷装进受害者设备性质完全不同。这里必须提醒一句Fiddler根证书一旦被导入系统信任区就等于你在设备上放了一把“万能钥匙”它能解开此后所有HTTPS流量。调试完建议在信任区里找到Fiddler证书把它删掉特别是在自己手机上长期使用的环境里别给不必要的风险留机会。3. 环境准备与基础配置3.1 下载安装与系统代理Fiddler Classic目前还是Windows平台最常用的免费版本直接到官网下载安装包就行。Fiddler Everywhere适合Mac/Linux用户它和Classic核心操作逻辑一致但界面更现代化部分高级功能需要授权。安装完第一次启动Fiddler会弹一个是否作为系统代理的提示。正常情况直接允许即可。如果你只是偶尔想抓包但不想影响日常上网可以在Tools Options Connections里取消勾选“Use system proxy”使用系统代理。这样浏览器不会自动走Fiddler你可以在需要抓包时把客户端代理手动指向127.0.0.1:8888。提示Fiddler退出时会自动恢复系统代理设置但偶尔异常退出比如强杀进程可能留脏表现为退出Fiddler后浏览器上不了网。遇到这种情况去Windows的“Internet选项 连接 局域网设置”里关掉代理服务器即可。3.2 监听端口与远程连接抓本机流量时保持默认端口8888就行。但手机抓包时手机需要通过局域网访问到电脑的Fiddler所以必须在Tools Options Connections里把“Allow remote computers to connect”允许远程计算机连接勾上。勾完后注意Windows防火墙可能会弹窗询问是否放行这里要允许在专用网络上访问。如果之前点过取消需要去防火墙入站规则里手动放行Fiddler进程或8888端口。同时要确认电脑和手机在同一个局域网。手机WiFi代理设置里填的IP是电脑的局域网IP例如192.168.1.100:8888不是127.0.0.1。手机如果连不上可以先在电脑上用浏览器访问http://localhost:8888验证Fiddler是否正常响应再查IP和防火墙。3.3 HTTPS解密三步配置Fiddler抓HTTPS必须在Tools Options HTTPS里打开“Decrypt HTTPS traffic”开关。第一次打开会提示安装根证书全部选“是”并信任即可。安装后建议验证一遍在浏览器访问https://www.baidu.com如果Fiddler里能看到带一把小锁图标的会话并且点击会话能看到明文响应内容说明解密链路已经通了。如果浏览器提示证书不安全常见原因是Fiddler根证书没有正确安装到“受信任的根证书颁发机构”。此时右键Fiddler里的任意HTTPS会话选择“Save Root Certificate to Desktop”导出证书再双击证书文件手动安装到“受信任的根证书颁发机构”存储区。安装过程中记得选“本地计算机”而不是“当前用户”有些环境只有管理员权限才能正确写入。4. 核心操作与界面详解4.1 会话列表怎么看Fiddler最核心的区域是中间的会话列表每一条都是一次HTTP请求常见列含义如下列名含义#请求序号ResultHTTP状态码200代表成功4xx/5xx要重点看ProtocolHTTP版本HTTP/1.1或HTTP/2Host请求域名URL请求路径和查询参数Body响应体大小Caching缓存命中信息Content-Type响应类型JSON、HTML、图片等Process发起请求的进程名会话状态码会以不同颜色或位置来区分的比如4xx/5xx通常会在列表中很显眼。右键任何一个会话最常用的几个操作是Save Selected Sessions HAR Files导出HAR格式复制会话为cURL命令直接丢给终端复现标记会话为“Save Request/Response”到本地文件。HAR格式值得多说一句它保存了完整的请求头和响应头、请求体响应体、耗时等信息。Chrome DevTools可以导入HAR抓包工具导出的HAR也能在别处分析这对跨团队协作定位问题非常有用。4.2 详情面板怎么用点中一个会话右侧Inspectors面板会分成左右两半左边是请求信息右边是响应信息。请求信息里头部区域可以看到请求方法、URL、Headers、Cookie、Authorization这些关键字段。Body区域有几个视图WebForms适合看表单参数JSON视图适合看接口返回的JSON结构Raw是纯原始文本适合排查编码和特殊字符问题。响应信息同理TextView用于快速查看文本内容JSON视图用于接口返回解析Raw视图能看到最真实的字节流内容。遇到中文乱码时优先切到Raw看。很多时候是浏览器自动转码导致误判Raw里反而能正确显示原始字节。如果Raw里也乱再考虑是不是服务器返回的字符集和页面声明的charset不一致。4.3 命令行与快捷操作Fiddler底部有一个黑色的QuickExec输入框支持很多效率命令我常用的有?关键字只显示URL里包含关键字的会话例如?api快速过滤接口请求select json选中所有响应类型为JSON的会话bp http://域名对这个域名设置请求断点bpafter 域名对这个域名设置响应断点bps 500对所有500状态码设置断点cls清空会话列表。快捷键方面CtrlX清空当前会话列表CtrlF在会话列表里搜索文本支持按URL、响应体搜索CtrlR打开FiddlerScript脚本编辑器可以自定义规则。习惯用命令行之后会效率高很多特别是在大量流量里搜一个接口时比鼠标点过滤器快得多。4.4 过滤器设置过滤器是抓包时最容易忽略、但最重要的功能。真实项目里一个页面可能同时加载几十个静态资源图片、JS、CSS、请求混在一起接口容易被淹没。在Fiddler左下角找到“Filters”页签勾选“Use Filters”然后在Host区域填上你关心的域名。多个域名用英文分号分隔。也可以直接在面板里勾掉“Show only Intranet Hosts”或过滤掉“.css、.js、.png、.gif”等静态资源类型。过滤器启用后不匹配的会话就不会显示界面会清爽很多。这里有个小坑过滤器设置后如果长时间不关闭后面抓别人问题时容易犯迷糊以为流量没抓到实际上是过滤器把内容藏起来了。换项目前先把Filter关掉避免白排查。5. 高频实战场景拆解5.1 前后端接口联调最典型的一个场景前端开发说接口报500后端开发说我没看到请求进来。两边争执不下就可以在Fiddler里开抓步骤如下启动Fiddler确认系统代理已生效前端在页面里复现操作在Fiddler里过滤出目标接口的Host点开会话看请求头、请求体、Cookie、时间线状态码看响应体的具体报错信息右键会话选择“Save Selected Sessions”保存证据或者直接复制cURL给后端复现。很多时候后端没看到请求其实是因为请求头里带了一个无效的Cookie后端网关直接把请求拦截掉了。这类问题不看原始流量很难定位而Fiddler能让你一眼看出请求在链条哪个环节断了。接口返回不符合预期时AutoResponder这个功能很有用。右键任意会话选择“Add Rule...”在Rule Editor里填写要拦截的URL匹配规则下面“Use this response”选“Create New Response”手动写JSON返回内容然后勾选“Unconditional”或保持精确匹配。之后前端再请求这个接口不会打到真实服务器Fiddler直接返回你写的本地JSON。这个能力很适合本地mock后端接口让前端不依赖后端环境也能继续开发。5.2 手机App抓包手机App抓包的通用步骤电脑和手机连到同一个WiFi关闭电脑防火墙遮挡或放行8888端口Fiddler勾选“Allow remote computers to connect”手机WiFi设置里把代理改为“手动”填入电脑局域网IP和8888端口手机浏览器访问http://电脑IP:8888点击页面上的“FiddlerRoot certificate”下载证书安装证书并信任。iOS设备装了证书后还要去“设置 通用 关于本机 证书信任设置”里把Fiddler根证书的完全信任开关打开否则HTTPS依然解不开。Android的坑更多。Android 7.0及以上版本很多App默认只信任系统证书不信任用户安装的证书。也就是说你手动装进了“用户证书”区App发起HTTPS连接时依然会校验失败。网上有些办法建议处理系统证书区但这涉及设备和系统安全边界我不主张普通调试环境去碰系统目录。常规项目里更稳妥的做法是让开发在测试包中开启调试开关允许信任用户证书或者把需要调试的接口临时切成HTTP环境验证逻辑等上线前再恢复HTTPS。安全类App、金融类App尤其要谨慎不要在未授权环境里做拦截尝试。模拟器抓包同理在模拟器WiFi设置里把代理指到电脑IP:8888电脑端保持Fiddler开启即可。需要注意模拟器网络模式如果用的是NAT代理IP填宿主机局域网IP即可别填成模拟器自己的IP。5.3 用Composer构造请求Composer是Fiddler自带的请求构造工具在右侧顶部切换到Composer页签就能用。你可以手动输入URL选择POST/GET/PUT等方法补充Headers在Body里写入JSON或表单参数然后点击Execute发送。我在实际开发中最常用的场景之一是复现一个“神秘Bug”前端页面上操作会触发某个请求但参数可能在某个环节被改掉了。这个时候从会话列表里右键目标请求选择“Edit in Composer”原请求的所有参数都会被带过来然后你想改哪个参数就改哪个改完点Execute就能直接验证后端对异常参数的处理逻辑。这个功能也适合做简单的接口测试不用切换到Postman或者其他工具。构造登录态请求时把原本的Cookie或Authorization头拷贝过来试几次就清楚了。5.4 性能与资源分析Fiddler不只是抓包工具还能辅助做前端性能分析。在会话列表里点击Duration列排序把耗时最长的请求排在前面能看到哪个接口拖慢了页面加载。再配合Filters把图片和JS等资源隔离掉能清楚看到页面的核心API耗时分布。响应体大小Body列也值得关注。如果发现某个接口返回了1MB以上的JSON明显是后端字段冗余或者没有按需裁剪这种问题用Fiddler能快速给出证据。缓存情况可以从Caching列看到命中缓存的资源会比重新下载快得多这也是前端优化经常盯的指标。6. 常见问题与排查技巧实录6.1 高频问题速查表问题现象常见原因解决方法安装了证书还是解不开HTTPS证书没有进入受信任根证书颁发机构右键会话导出证书手动安装到“本地计算机 受信任的根证书颁发机构”手机连不上Fiddler代理未勾选远程连接、防火墙没放行、IP填错检查Allow remote computers to connect放行8888端口确认IP是局域网IP抓包后浏览器上不了网Fiddler异常退出系统代理残留打开Internet选项 局域网设置关闭代理服务器勾选某些App抓不到包App不走系统代理开发测试包中配置代理参数或对HTTP接口临时调试不强行拦截系统流量中文乱码字符集不匹配或转码误判切到Raw视图看原始字节排查charset声明请求耗时很长服务器处理慢或网络链路问题对比Duration列用Composer重放请求确认一致性过滤后找不到会话过滤器忘记关闭关闭Filters页签的Use Filters开关响应体是加密的字符串应用层做了传输加密需要在应用内解密Fiddler层面无法展开6.2 避坑经验分享用了这么多年我养成几个习惯供你参考第一抓包前先开过滤器。很多人一上来就直接抓结果会话列表里全是图片和JS真正要找的接口被淹没排查效率很低。先想清楚“我要看哪些域名”再动手事半功倍。第二抓完马上退出或关闭代理。Fiddler开着就占用系统代理位置电脑上如果有其他程序在同步、更新流量也会被带进来既慢又乱。长时间不抓包时退出Fiddler让系统网络回归正常。第三信任证书前多留个心眼。弹窗提示安装根证书时确认来源是Fiddler官方环境。调试结束在证书管理里删除Fiddler Root Certificate养成干净环境的习惯。这个操作同样适用于公司电脑避免离职或换机后历史证书成为风险点。第四遇到“明明解密了还是看不懂”的情况先怀疑应用层加密。比如某些App的接口在HTTPS之上还会做一层Content-Encoding压缩或者请求体是自定义加密格式。观察请求头里的Content-Type和Accept-Encoding以及响应有没有压缩标记能帮你判断是不是Fiddler显示层面的双保险。第五排查问题时多利用右键的“Save Response”和“Copy Just URL”。把原始请求保存下来配合后端同学一起分析。很多时候你以为后端收到的和你看到的一致但实际中间环节可能被网关改写原始响应记录就是最好的证据。最后再说一个小技巧如果你在Windows上同时开了其他代理工具和Fiddler的本地代理可能会冲突现象是Fiddler里出现一堆连接被重置的记录。遇到这种情况先把另一个代理工具退出再单独使用Fiddler不要同时开多个抢占端口。你在一个干净的代理环境下排查问题会比多个工具互相干扰快得多。
RELATED

相关推荐

微博情感分析系统全拆解:从爬虫采集到可视化呈现

微博情感分析系统全拆解:从爬虫采集到可视化呈现

简介:基于微博情感分析系统的毕业设计项目,面向计算机相关专业毕业生及有Python基础的实践者,完整呈现从微博数据获取、文本预处理到多种分类器训练与评估的工程链路。压缩包共71个文件,以31个Python脚本为核心,搭配15…

📅 2026/10/11 16:56:46
基于Spark的电影推荐系统:ALS算法实战与毕设避坑指南

基于Spark的电影推荐系统:ALS算法实战与毕设避坑指南

简介:一份基于Spark的电影推荐系统设计与实现资料包,面向大数据与推荐系统方向的学生、毕业设计者及自学开发者。资源以docx论文为核心,完整呈现从绪论、开发技术到系统设计、实现与测试的规范流程,涵盖课题背景、研究现状、技术选…

📅 2026/10/11 16:51:46
视频分析算法60讲:MATLAB实战教程,从运动检测到目标跟踪

视频分析算法60讲:MATLAB实战教程,从运动检测到目标跟踪

简介:《视频分析算法60讲》配套PDF与MATLAB源码是一份面向计算机视觉与视频处理学习者的完整资料包,适合从入门到进阶的研究人员、工程师及高校学生使用。内容按60讲组织,覆盖视频预处理(去噪、增强、帧间插值)、运动估…

📅 2026/10/11 16:51:46
MORE NEWS

更多资讯

📰

从源码构建HaleHound-CYD:PlatformIO多环境编译、OTA升级与Python版本陷阱完整指南

【免费下载链接】HaleHound-CYD ESP32-DIV HaleHound Edition for Cheap Yellow Display - Multi-protocol offensive security toolkit 项目地址: https://gitcode.com/gh_mirrors/ha/HaleHound-CYD 点击查看 免费下载 HaleHound-CYD 是一款运行在 ESP32 Cheap Ye…

📰

Agent基础——HTTP API

假设现在我们的Agent需要向工厂服务器查询设备的数据,这时候可以通过工厂服务器提供的接口进行查询,大致过程如下图所示:1.了解HTTP API首先,我们要先了解什么是HTTP API?我们可以简单的将其理解为:程序通过…

📰

基于YOLOv5的猪脸目标检测实战:数据采集、模型训练到TensorRT部署

简介:基于YOLOv5的猪脸目标检测项目以PyTorch为框架,面向畜牧智能化管理场景,可服务于猪只健康监测、个体识别与行为分析,适配有一定深度学习基础并希望落地目标检测应用的开发者。压缩包共236个文件,大小约70.75MB&am…

📰

Python利用支持向量机SVM进行时间序列预测:数据+源码实战

简介:这份资源面向希望用Python实现时间序列预测的开发者与数据分析学习者,聚焦支持向量机(SVM)在回归预测场景中的落地应用。包内共2个文件,包含1个py源码与1个xlsx数据文件,压缩包约34KB,源码…

📰

AI Toolbox Skills 技能管理完整教程:从 Git 安装到按工具同步,一键搞定

【免费下载链接】ai-toolbox Personal AI Toolbox 项目地址: https://gitcode.com/gh_mirrors/aitoolbo/ai-toolbox 点击查看 免费下载 AI Toolbox 是一款跨平台个人 AI 工具箱,其中的 Skills 技能管理模块可以帮你把 AI 编程技能从 Git 仓库或本地目录…

📰

Postgres主从流复制+pgpool高可用方案:从WAL原理到Failover实操

简介:一份针对 PostgreSQL 高可用架构的完整方案文档,面向数据库运维与架构设计工程师,重点解决基于 WAL 流复制搭建主从库、实时数据同步,以及结合 pgpool-II 实现连接池管理、读写分离与故障自动切换的问题。文档详细介绍了同步…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬