news 2026/9/15 0:34:06

使用Python来分离或者直接抓取pcap抓包文件中的HTTP流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Python来分离或者直接抓取pcap抓包文件中的HTTP流

下面给你一篇实战型教程,系统讲清楚:
👉如何使用 Python 分离 / 直接抓取 pcap 抓包文件中的 HTTP 流量
适合网络分析、取证、爬虫逆向、毕设、运维排障等合法场景。


使用 Python 分离或抓取 PCAP 文件中的 HTTP 流(完整指南)

⚠️ 合法声明
本文仅用于协议分析、网络调试、教学研究、取证分析,请勿用于非法监听或隐私数据采集。


一、PCAP + HTTP 分析能做什么?

你可以从抓包文件中提取:

  • HTTP 请求 URL
  • 请求方法(GET / POST)
  • 请求头 / Cookie
  • POST 表单数据
  • HTTP 响应内容
  • 文件下载内容(HTML / JSON / 图片等)

二、三种主流技术路线(先选方案)

方式难度适合场景
Scapy⭐⭐快速分析、脚本化
PyShark⭐⭐⭐类 Wireshark 分析
dpkt⭐⭐⭐⭐高性能、底层解析

👉新手推荐:PyShark
👉性能要求高:dpkt


三、方案一:使用 PyShark(最推荐)

1️⃣ 安装依赖

pipinstallpyshark

⚠️ 需要提前安装Wireshark / tshark


2️⃣ 读取 pcap 文件中的 HTTP 流

importpyshark cap=pyshark.FileCapture('test.pcap',display_filter='http')forpacketincap:try:print("URL:",packet.http.request_full_uri)print("Method:",packet.http.request_method)print("Host:",packet.http.host)print("-"*50)except:pass

📌优点

  • 自动解析 HTTP
  • 支持过滤器
  • 可直接分离流量

3️⃣ 抓取 POST 数据

forpacketincap:if'http'inpacketandhasattr(packet.http,'file_data'):print(packet.http.file_data)

4️⃣ 分离 HTTP 响应内容

forpacketincap:if'http'inpacketandhasattr(packet.http,'response_code'):print(packet.http.response_code)print(packet.http.response_phrase)

四、方案二:使用 Scapy(轻量级)

1️⃣ 安装

pipinstallscapy

2️⃣ 解析 HTTP 流

fromscapy.allimportrdpcapfromscapy.layers.httpimportHTTPRequest packets=rdpcap("test.pcap")forpktinpackets:ifpkt.haslayer(HTTPRequest):http=pkt[HTTPRequest]print("Host:",http.Host.decode())print("Path:",http.Path.decode())

📌适合

  • 快速提取 URL
  • 自定义协议分析

3️⃣ 解析 POST 数据

ifpkt.haslayer(Raw):print(pkt[Raw].load)

五、方案三:使用 dpkt(专业级)

1️⃣ 安装

pipinstalldpkt

2️⃣ 解析 HTTP 请求

importdpktimportsocketwithopen('test.pcap','rb')asf:pcap=dpkt.pcap.Reader(f)forts,bufinpcap:eth=dpkt.ethernet.Ethernet(buf)ifnotisinstance(eth.data,dpkt.ip.IP):continueip=eth.dataifisinstance(ip.data,dpkt.tcp.TCP):tcp=ip.datatry:http=dpkt.http.Request(tcp.data)print(http.method,http.uri)except:pass

📌优点

  • 速度快
  • 可处理大文件
  • 适合批量取证分析

六、如何“分离 HTTP 流”(按会话)

核心思路

(src_ip, src_port, dst_ip, dst_port) = 一个 HTTP 会话

示例(dpkt)

sessions={}key=(ip.src,tcp.sport,ip.dst,tcp.dport)sessions.setdefault(key,b'')sessions[key]+=tcp.data

之后可对每个 session 单独解析。


七、导出 HTTP 内容到文件

示例:导出 HTML / JSON

withopen("output.html","wb")asf:f.write(http.body)

八、HTTP vs HTTPS 注意事项(重点)

协议是否可直接解析
HTTP✅ 可以
HTTPS❌ 不行(需密钥)

HTTPS 解决方案(进阶)

  • SSLKEYLOGFILE
  • Wireshark + TLS 解密
  • 只能解密自己抓的流量

九、典型应用场景

✅ 网络故障排查
✅ 协议分析学习
✅ 安全取证
✅ 流量回放
✅ 爬虫逆向辅助


十、三种方案对比总结

工具推荐指数特点
PyShark⭐⭐⭐⭐⭐最简单,功能强
Scapy⭐⭐⭐灵活,轻量
dpkt⭐⭐⭐⭐高性能,偏底层

十一、毕设 / 报告可用一句话

本系统基于 Python 对 pcap 抓包文件进行解析,实现了 HTTP 流量的自动识别、分离与数据提取,为网络分析和安全研究提供技术支撑。


十二、如果你还想进阶,我可以继续帮你

  • ✅ HTTPS 流量解密实战
  • ✅ HTTP 文件自动还原
  • ✅ pcap → 请求重放
  • ✅ 流量分析可视化(Flask)
  • ✅ 批量抓包分析系统设计

你可以直接告诉我:
👉学习 / 毕设 / 安全分析 / 运维排障
我可以按你的用途给你一套更完整的方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 4:45:52

YOLOv8模型微调实战:自定义数据集yaml配置要点

YOLOv8模型微调实战:自定义数据集yaml配置要点 在目标检测的实际项目中,开发者常常面临这样一个困境:明明已经有了标注好的数据和强大的预训练模型,但训练一启动就报错——“找不到标签”、“类别数量不匹配”……排查半天才发现&…

作者头像 李华
网站建设 2026/9/12 0:14:21

YOLOv8 coco8.yaml数据集格式解析:适用于小规模测试

YOLOv8 coco8.yaml数据集格式解析:适用于小规模测试 在目标检测的开发实践中,最让人头疼的往往不是模型本身,而是如何快速验证整个训练流程是否走通。尤其是在刚接触 YOLOv8 时,面对复杂的环境依赖和庞大的数据集要求,…

作者头像 李华
网站建设 2026/9/12 3:18:41

PHP与MQTT协议融合实践,构建低功耗智能控制系统的终极指南

第一章:PHP 智能家居设备控制接口开发在现代物联网架构中,PHP 作为后端服务的轻量级解决方案,广泛应用于智能家居设备的控制接口开发。通过构建 RESTful API,PHP 能够与硬件网关通信,实现对灯光、温控、安防等设备的远…

作者头像 李华
网站建设 2026/9/10 1:09:45

关于 RTP/AVPF 的简单讨论

咨询了国内非常好的FreeSWITCH开发工程师,结论是一致的,那就是Fs的bug相关规范是: https://www.rfc-editor.org/rfc/rfc4585.htmlF的意思是feedback要求根据rtcp的汇报情况动态调整码率,a说我丢包啦,b收到后降码率&…

作者头像 李华
网站建设 2026/9/10 14:41:59

YOLOv8备份策略:重要模型文件异地保存

YOLOv8备份策略:重要模型文件异地保存 在现代AI研发中,训练一个高性能的目标检测模型可能需要数小时甚至数天的GPU资源投入。一旦因服务器宕机、误删或容器重建导致best.pt丢失,不仅意味着计算成本白费,更可能导致项目进度严重延误…

作者头像 李华