You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyshark解析HTTP报文不显示\r\n\r\n且头部顺序与Wireshark不一致问询

问题1:获取HTTP头部末尾完整\r\n\r\n的实现方法

pyshark底层调用tshark完成报文解析,默认打印的是结构化拆解后的字段,展示时会给每个拆分出的头部行末尾添加\r\n,而HTTP头部与请求体之间的原生分隔符\r\n\r\n会被截断为单个\r\n展示。
要获取完整的原始分隔符,可通过开启原始数据捕获能力实现:
修改FileCapture初始化参数,添加include_raw=True即可读取HTTP层的完整原始字节,解码后就能看到完整的\r\n\r\n:

import pyshark

with pyshark.FileCapture('testing-mutillidae1.pcap', include_raw=True) as capture:
    for pkt in capture:
        if hasattr(pkt, 'http'):
            # 读取HTTP层原始字节并解码
            http_raw_content = pkt.http.raw_value.decode('utf-8', errors='replace')
            print(http_raw_content)
            break

如果当前HTTP报文未跨TCP分段,也可以直接读取TCP层的payload字段解析,效果一致。

问题2:HTTP头部顺序与Wireshark不一致的原因

顺序差异由两点导致:

  • Wireshark的头部列表严格按照报文实际传输的字节顺序展示,而pyshark会将tshark解析出的HTTP字段存储为无序类字典结构,遍历输出时不会保留原始传输顺序。
  • pyshark输出内容额外插入了大量tshark生成的衍生字段,比如你输出中的Cookie pair、Request URI Path、Expert Info等,这类字段本身不属于原始HTTP头部,插入后也会打乱原有头部顺序。
    如果需要保留原始头部顺序,直接解析上述原始HTTP字节,自行分割头部行即可。

内容的提问来源于stack exchange,提问作者xplo1t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 19:48:04