借助 Python (2.7.9) Requests 库从 url 下载 pcap 文件:
import requests
response = requests.get('http://example.com/path/1.pcap', stream=True)
根据文档response.raw
是一个类似文件的对象,我的目标是处理下载的文件而不将其保存到磁盘。
我首先查看了用于文件解析的库,但它们的函数 (Scapy
和Pyshark
)接受文件路径字符串作为参数。from library 接受一个文件对象。第一次尝试报错:.pcap
rdpcap
FileCapture
pcap.Reader
dpkt
pcap=dpkt.pcap.Reader(resonse.raw)
AttributeError: 'HTTPResponse' object has no attribute 'name'
添加了名称属性:
setattr(response.raw,'name', 'test.pcap')
之后pcap=dpkt.pcap.Reader(resonse.raw)
没有给出任何错误但pcap.readpkts()
失败了
io.UsupportedOperation: seek
并且确实response.raw.seekable()
返回False
。
我尝试设置response.raw.decode_content = True
,但没有帮助。
有没有按照我尝试的方式处理对象的解决方案?也许需要额外的请求参数才能获得可搜索的响应对象?
顺便说一句,如果将响应对象写入文件 ( shutil.copyfileobj(response.raw,file)
),dpkt
之后会成功使用该文件。