Wireshark可通过HTTP流提取与格式化XML/SOAP流量,关键步骤包括:用http.content_type contains "xml"过滤,Follow HTTP Stream获取纯净body,手动处理gzip压缩,并用http contains "Login"等字符串定位元素。

Wireshark 本身不直接解析 XML 或 SOAP 协议,但可以通过过滤、着色和手动/辅助解析的方式高效分析基于 HTTP 的 XML 流量(如 SOAP over HTTP)。关键在于把 XML 内容从 TCP/HTTP 封装中“捞出来”,再结构化查看。
确认流量是 HTTP+XML(常见于 SOAP)
SOAP 多数走 HTTP POST,Content-Type 通常为 text/xml、application/soap+xml 或 application/xml。在 Wireshark 中快速确认:
- 用显示过滤器:http.request.method == "POST" && http.content_type contains "xml"
- 或更精准:http.content_type contains "soap" || http.content_type contains "xml"
- 点开数据包 → HTTP 层 → 查看 Content-Type 和 Content-Length 字段
提取并美化 XML 内容(关键操作)
原始 TCP 流里的 XML 常被截断、压缩或混在 HTTP 头后。推荐做法:
- 右键数据包 → Follow → HTTP Stream:自动拼接请求+响应,去除 HTTP 头,只留 body(最常用)
- 若内容被 gzip 压缩(Content-Encoding: gzip),Wireshark 默认不自动解压;需手动导出 raw data 后用外部工具(如 Python 或在线解压器)处理
- 复制 HTTP Stream 窗口中的 XML 文本 → 粘贴到支持格式化的编辑器(VS Code、Notepad++、XMLSpy)自动缩进高亮
用过滤器定位特定 SOAP 元素
Wireshark 不支持 XPath,但可借助字符串匹配快速定位关键字段:
- 查找某方法名(如 Login):http contains "Login"
- 查找特定命名空间或标签:http contains "soap:Envelope" || http contains "env:Body"
- 排除干扰(如 JS/CSS):http.content_type == "text/xml" && http contains "
注意:这些是字符串搜索,大小写敏感;如需忽略大小写,加 -i 参数(如 http contains -i "login")
配合专家信息与自定义列提升效率
让关键信息一目了然:
- 添加自定义列:右键列标题 → Column Preferences → 新增列,字段选择 http.content_type 或 http.request.uri
- 启用专家信息(View → Expert Info):HTTP 错误(如 500)、重定向、长响应等会标黄/红,常对应 SOAP Fault
- 对 SOAP Fault 高亮:创建着色规则 http contains "Fault",设为红色背景,一眼识别失败调用
基本上就这些。不需要插件也能完成大部分 SOAP 分析,核心是“先定位、再提取、后格式化”。遇到 HTTPS 流量?得提前配置 SSL/TLS 解密(需服务端密钥或浏览器 NSS key log),否则只能看到加密载荷。










