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

时间:2012-08-17 16:19:07

标签: python networking network-programming pcap scapy

我需要监控某个网站在处理时需要多长时间才能做出响应。我想嗅到端口80上的流量,但只有在与目标站点交换流量时才会这样。我搜索了SO,似乎pcapy或scapy是适合这项工作的工具,但它们似乎比我需要的更深。我研究了以下脚本:

Network traffic monitor with pcapy in python

我想我需要改变

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)

以某种方式解压缩/处理发往目标站点的数据包。请注意,这适用于LAN上的Windows XP计算机,浏览器启动流量至关重要。

任何指针都赞赏?

1 个答案:

答案 0 :(得分:3)

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

  

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

就像你说scapy更适合低层事物。例如,您可能会在DHCP请求上跟踪IP数据包。像许多网络工具一样,TCP的复杂性和基于流的特性意味着一旦你越过那一层就越难重新组装所有的东西并处理所有的重传和什么不是边缘情况并且连贯地拉出数据。

你能使用像curl或urllib这样的东西,看看回复回来需要多长时间?