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

我需要监视某个网站在被访问时响应需要多长时间.我只想嗅探端口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计算机的,浏览器启动流量至关重要.

任何指针赞赏吗?

解决方法:

scapy的问题在于它不能处理TCP streams的重组.您要查找的HTTP可能已嵌入TCP流中.引用文档:

Scapy is based on a stimulus/response model. This model does not work well for a TCP stack. On the other hand, quite often, the TCP stream is used as a tube to exchange messages that are stimulus/response-based.

就像您说的那样,Scapy更适合用于下层事物.例如,您可能会跟踪DHCP请求上的IP数据包.像许多网络工具一样,TCP的复杂性和基于流的性质意味着,一旦跨越该层,将很难重组所有内容并处理所有重传,而不是边缘情况,并连贯地提取数据.

您能否使用curl或urllib之类的东西,看看响应返回需要多长时间?

上一篇:pip升级scapy报错It is a distutils installed project and thus we cannot accurately determine which files


下一篇:python-在Windows和Fedora上都安装scapy后,缺少scapy的贡献