Python 使用pcapy或scapy监视自生成(HTTP)网络流量

Python 使用pcapy或scapy监视自生成(HTTP)网络流量,python,networking,network-programming,pcap,scapy,Python,Networking,Network Programming,Pcap,Scapy,我需要监控某个网站在收到地址时需要多长时间才能做出响应。我想嗅探端口80上的流量,但只有在与目标站点交换流量时。我已经搜索了这么多,似乎pcapy或scapy是适合这份工作的工具,但它们似乎比我需要的更深。我正在学习以下脚本: 我想我需要改变现状 def __handle_packet(self, header, data): # method is called for each packet by dispatch call (pcapy) self._dispatch_b

我需要监控某个网站在收到地址时需要多长时间才能做出响应。我想嗅探端口80上的流量,但只有在与目标站点交换流量时。我已经搜索了这么多,似乎pcapy或scapy是适合这份工作的工具,但它们似乎比我需要的更深。我正在学习以下脚本:

我想我需要改变现状

def __handle_packet(self, header, data):
    # method is called for each packet by dispatch call (pcapy)
    self._dispatch_bytes_sum += header.getlen() #header.getlen() #len(data)
    logger.debug("header: (len:{0}, caplen:{1}, ts:{2}), d:{3}".format(header.getlen(), header.getcaplen(), header.getts(), len(data)))
    #self.dumper.dump(header, data)
以某种方式仅解压缩/处理目的地为目标站点的数据包。请注意,这适用于局域网上的Windows XP计算机,浏览器启动通信至关重要


任何指针都值得赞赏吗?

scapy的问题是它不能处理重新组装。您正在寻找的HTTP可能嵌入到TCP流中。引用文件:

Scapy基于刺激/反应模型。此模型不适用于TCP堆栈。另一方面,TCP流经常被用作交换基于刺激/响应的消息的管道

就像你说的,scapy更适合低层的东西。例如,您可以跟踪DHCP请求上的IP数据包。与许多网络工具一样,TCP的复杂性和基于流的特性意味着,一旦你跨过这一层,就很难重新组合所有内容,处理所有的重传和边缘情况,并连贯地提取数据


您可以使用curl或urllib之类的工具,看看回复需要多长时间吗?

可以,我目前正在使用selenium,因为它会从浏览器生成流量。我希望被动地嗅探浏览器生成的流量是可能的,因为配置相应的selenium会话并不总是可能的,但从您所说的来看,这似乎是一个相当大的挑战。@Caluer Yeah嗅探TCP是不寻常的。它是有状态的。您可以设置连接并对多个请求保持打开状态,或者为每个HTTP请求设置一个新连接。当然,您可以编写一些代码,假设TCP始终是可靠的,并且以您知道的特定方式运行,只在特定情况下有效。@Caluer scapy也有点恼人,因为上一次我尝试使用它时,它只在python 2.6中运行。将是用于此场景的适当工具。但是,它在Windows上不起作用。要回答我自己的问题,答案如下:。您必须查看network.py文件。