Fiddler 4.6+ 支持 WebSocket 抓包,需启用 HTTPS CONNECT 捕获、流量捕获及正确代理设置;握手后在 WebSocket 标签页可查看解掩码的文本/二进制帧及控制帧。

WebSocket 是 HTML5 提供的全双工通信协议,其数据帧结构与 HTTP 不同,Fiddler 默认不直接解析 WebSocket 数据帧内容(尤其是二进制帧或掩码后的 payload),但可通过配置和插件实现有效抓包与分析。
启用 Fiddler 对 WebSocket 的捕获支持
Fiddler 4.6+ 版本默认支持 WebSocket 流量捕获,但需确认以下设置已开启:
- 菜单栏勾选 Tools → Options → HTTPS → Capture HTTPS CONNECTs(即使 WebSocket 基于 wss://,此选项影响隧道建立)
- 确保 Tools → Options → General → Capture Traffic 处于启用状态
- 在 Tools → Options → Connections 中,确认监听端口为默认 8888,且“Allow remote computers to connect”按需勾选
- 浏览器代理需指向
127.0.0.1:8888(Fiddler 默认监听地址)
识别并打开 WebSocket 会话
启动 Fiddler 后,在 Web 页面建立 WebSocket 连接(如 new WebSocket("wss://echo.websocket.org")),Fiddler 会以 CONNECT 请求形式记录握手过程:
- 查找类型为 CONNECT、Host 为 WebSocket 服务器域名、Protocol 为
websocket的会话 - 双击该会话 → 切换到 WebSocket 标签页(Fiddler 5 及以上显示为 “WebSocket Frames”)
- 若未看到该标签,请检查 Fiddler 版本是否 ≥4.6,或尝试重启 Fiddler + 浏览器
查看与解码 WebSocket 数据帧
Fiddler 的 WebSocket 标签页将自动解析帧头,并区分文本帧(Text)、二进制帧(Binary)、Ping/Pong/Close 等控制帧:
立即学习“前端免费学习笔记(深入)”;
- 文本帧(Opcode=1):Payload 显示为 UTF-8 字符串,可直接阅读(如 JSON 消息)
- 二进制帧(Opcode=2):默认以十六进制(Hex)显示;点击右上角 “View as…” → “String” 尝试转为可读文本(仅当内容为文本编码时有效)
- 注意掩码(Mask)字段:客户端发往服务端的帧必含 Mask(1字节),Fiddler 已自动解掩码,无需手动处理;服务端发往客户端的帧无 Mask,Fiddler 直接显示原始 payload
- 每帧显示 Direction(C→S 或 S→C)、Opcode、Length、Time,便于定位异常帧或延迟问题
常见问题与应对建议
若无法看到 WebSocket Frames 标签或数据为空,可尝试以下操作:
- 关闭浏览器“QUIC 协议”(Chrome 地址栏输入
chrome://flags/#enable-quic→ 设为 Disabled),避免 UDP 隧道绕过 Fiddler - 使用 FiddlerScript 自定义逻辑:在 Rules → Customize Rules 中,添加
OnBeforeResponse日志输出 WebSocket Upgrade 响应头,辅助验证握手是否成功 - 对加密的 wss 流量,确保已安装 Fiddler Root Certificate 并启用 HTTPS 解密(Tools → Options → HTTPS → Decrypt HTTPS traffic)
- 若仍失败,可改用浏览器原生开发者工具(Network → Filter 输入 “ws”)作辅助验证,再比对 Fiddler 行为



















