3

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

在 python 中使用 pcapy 监控网络流量

我想我需要改变

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 机器,浏览器启动流量至关重要。

任何指针表示赞赏?

4

1 回答 1

3

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

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

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

你可以使用 curl 或 urllib 之类的东西,看看响应回来需要多长时间?

于 2012-08-17T16:26:24.203 回答