python - 如何在 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
解决方案
确保您使用的是 Scapy 2.4.3
推荐阅读
- git - 无法使用 git 将文件添加到 stage 与 `git add .`:zsh 进入文本编辑器模式
- javascript - Paypal SDK 没有收钱
- flutter - Bloc 到 Bloc 通信 Mutibloc 提供程序
- python - Sympy 错误 - 几何错误
- ruby-on-rails - Heroku 总是安装 yarn v.1.16.0
- angular - Angular 8:对对象执行乘法时出现编译错误
- php - PHP "auto_prepend_file" 导致每个文件(包括不存在的文件)的 HTTP 200 响应
- r - str_replace_all() 不会检测返回或换行“\\r\\n”
- vba - 将长时间戳转换为更短的时间戳?
- pandas - 使用 BeautifulSoup 抓取数据而不是获取所有行