我需要监控某个网站在寻址时需要多长时间才能做出响应。我想嗅探端口 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 更适合低层的东西。例如,您可以根据 DHCP 请求跟踪 IP 数据包。像许多网络工具一样,TCP 的复杂性和基于流的性质意味着一旦你跨过该层,重新组装所有内容并处理所有重传以及非边缘情况并连贯地提取数据变得更加困难。
你能不能使用 curl 或 urllib 之类的东西,看看响应需要多长时间?
关于python - 使用 pcapy 或 scapy 监控自生成 (HTTP) 网络流量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12009442/