首页 > 解决方案 > 如何在 scapy 中获得 http 支持

问题描述

我正在使用 scapy 在 python 中构建数据包嗅探器,现在,我想过滤收到的 http 数据包并从中提取 url(主机 + 路径),但我的程序崩溃并显示消息:文件“packet_sniffer.py”,第 4 行,从 scapy.layers.http 导入 * ImportError:没有名为 http 的模块

当键入 scapy 层 http 导入时,我可以自动完成 http 部分,因此它看起来确实可以识别它,但是在运行时它会崩溃。

我在我的代码部分尝试了其他语法,例如使用“scapy.http.HTTPRequest”“scapy.layers.http.HTTPRequest”

#!/usr/bin/env python

import scapy.all as scapy
from scapy.layers.http import *




def sniff(interface):
scapy.sniff(iface=interface,
            store=False,
            prn=process_sniffed_packet,
            lfilter=lambda p: "POST" in str(p),
            filter="tcp port 80")


def process_sniffed_packet(packet):
    url = packet[scapy.layers.http.HTTPRequest].Host + packet[scapy.layers.http.HTTPRequest].Path
    print(url)

我的模块导入或代码有问题吗?

** 注意,我使用的是 scapy 2.4.3

标签: pythonhttpscapypacket-sniffers

解决方案


确保您使用的是 Scapy 2.4.3


推荐阅读