Wireshark 通过 HTTP/TCP 过滤与 XML 关键字匹配定位 SOAP 流量,常用过滤器如 http.request.method == "POST" && http contains "soap"。

Wireshark 本身不直接识别 SOAP 协议(它不是标准网络层协议),但可以通过 HTTP/TCP 过滤 + 内容关键字匹配来高效定位和分析 SOAP/XML 流量。关键在于:SOAP 通常封装在 HTTP POST 请求/响应中,且 XML 内容带有典型标签(如
过滤 SOAP 流量的常用显示过滤器
在 Wireshark 主界面顶部的过滤栏输入以下表达式(按需组合):
- http.request.method == "POST" && http contains "soap" —— 筛出含 "soap" 的 POST 请求(兼容大小写,Wireshark 默认不区分)
- http contains "
—— 直接匹配常见 SOAP 根元素(注意引号需英文,空格不可省略) - tcp.port == 8080 && http.content_type contains "xml" —— 若服务跑在 8080,且 Content-Type 明确为 application/soap+xml 或 text/xml
- http.host contains "api.example.com" && http.request.uri contains "/service" —— 结合业务路径缩小范围,避免全量抓包干扰
让 XML 内容可读:启用自动解码与展开
默认情况下,HTTP 载荷可能被压缩(gzip)或以十六进制显示。要清晰查看 SOAP XML:
- 右键某条 HTTP 流 → Follow → HTTP Stream,Wireshark 会重组 TCP 流并自动解压(若支持)、还原换行和缩进
- 若仍显示乱码,检查响应头:Content-Encoding: gzip 表示已压缩;Wireshark 2.x+ 通常自动解压,旧版本需手动导出后用工具解压
- 在 Packet Details 面板中展开 Line-based text data 或 XML 节点(如有),可直接看到格式化后的 XML 片段
快速定位请求/响应配对与关键字段
SOAP 交互是严格的请求-响应模式,常需对照分析:
- 按 http.request_in 和 http.response_in 字段排序列,可关联同一事务的请求包序号与响应包序号
- 关注常见字段:SOAPAction 头(HTTP 头中)标识操作名;wsa:Action(WS-Addressing)在 XML body 中定义目标动作
- 错误排查时重点看:faultcode、faultstring(在
下),它们直接说明服务端异常类型 - 用 Ctrl+F → String 在当前包中搜索 "fault"、"error"、"400"、"500" 等关键词,快速跳转问题位置
保存与复用:导出 SOAP 消息用于调试
把抓到的有效 SOAP 请求/响应保存下来,方便重放或给开发复现:
- 右键包 → Export Packet Bytes… → 保存为 .txt,再用文本编辑器手动删去 HTTP 头,只留 XML 部分
- 更推荐:使用 Follow → HTTP Stream → 全选 → 复制 → 粘贴到编辑器,然后剪裁出 结尾的完整块
- 导出后可用 curl 或 SoapUI 重发:确保设置正确的 Content-Type: application/soap+xml 和 SOAPAction 头










