如何在python中嗅探HTTP数据包?

如何在python中嗅探HTTP数据包?,python,http,sniffer,Python,Http,Sniffer,我想通过python(2.6版)嗅探我计算机中的所有HTTP数据包。这可能吗?我可以使用scapy还是不使用其他外部模块来嗅探?仅用于从网页或类似结构化文档提取数据 要真正读取来自NIC的数据包,最好的性能选项可能是使用具有python绑定的C/C++API 例如,WireShark有一个 是使用libpcap进行数据包捕获的模块 是为TCPDUMP编写的数据包捕获库,也用于WireShark 另一个选择是尝试dpkt python模块。 下面是一个使用dpkt和pcap嗅探HTTP数据包的示例

我想通过python(2.6版)嗅探我计算机中的所有HTTP数据包。这可能吗?我可以使用scapy还是不使用其他外部模块来嗅探?

仅用于从网页或类似结构化文档提取数据

要真正读取来自NIC的数据包,最好的性能选项可能是使用具有python绑定的C/C++API

例如,WireShark有一个

是使用libpcap进行数据包捕获的模块

是为TCPDUMP编写的数据包捕获库,也用于WireShark

另一个选择是尝试dpkt python模块。 下面是一个使用dpkt和pcap嗅探HTTP数据包的示例

编辑:哎呀,我误读了scapy。谢谢你

正如您所提到的,另一个python模块也使用LibPCAP。 这有一个嗅探的例子

如果您在Python 2.7上运行时遇到问题,请查看此项。

pypcap,libpcap的简化面向对象Python扩展模块-当前的tcpdump.org版本,一些BSD操作系统附带的旧版本,以及Windows的WinPcap端口。这是一个Windows版本。如果您使用的是#nix、 只需安装pcap和dpkt模块。

tshark的Python包装器

用法:

>>> capture = pyshark.LiveCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>

for packet in capture.sniff_continuously(packet_count=5):
    print 'Just arrived:', packet
>capture=pyshark.LiveCapture(interface='eth0')
>>>捕获.嗅探(超时=50)
>>>俘获
>>>捕获[3]
对于捕获中的数据包。连续嗅探(数据包计数=5):
打印“刚到:”,数据包

FTR,Scapy将支持从2.4.3开始的HTTP数据包:

嗅探演示:

from scapy.layers.http import * # read the doc
from scapy.sendrecv import sniff
sniff(lfilter=lambda x: HTTP in x, prn=lambda x: x.summary())

关于结束投票,我认为这是一个很好的问题。他要求一种技术来解决一个特定的问题,问题是什么?你看了吗?(在这个问题结束之前快速…)相关的可能重复:好的,如果我想使用dpkt和pcap模块进行嗅探,我如何用它们嗅探HTTP数据包?我很高兴得到一个例子。我看到了一个例子,如何用这个模块嗅探icmp数据包,而不是HTTP数据包。看起来WireShark的Python API现在不见了。PyShark似乎是最活跃的e如下面的答复所述,现在就采取这种做法。
from scapy.layers.http import * # read the doc
from scapy.sendrecv import sniff
sniff(lfilter=lambda x: HTTP in x, prn=lambda x: x.summary())