我正在使用函数dpkt.http.Request(),但有时http流不是请求。 有没有快速的方法在python或dpkt中知道我的请求是GET还是POST?
答案 0 :(得分:1)
尝试将其解析为HTTP请求并捕获dpkt.UnpackError
,这样如果程序不是HTTP请求,程序就不会死亡。
如果没有抛出异常,您可以使用.method
对象的Request
来获取所使用的方法。
答案 1 :(得分:1)
>>> import dpkt
>>> r = dpkt.Request('GET / HTTP/1.0\r\n\r\n')
Finding the HTTP verb is easy:
>>> r.method
"GET"
如果解析HTTP请求数据有困难,那么由于dpkt.Request.unpack
方法处理异常的方式,不可能恢复原始源数据。
这样的解决方法可能很方便:
>>> data = 'GET / HTT' #malformed request
>>> try:
... r = dpkt.Request(data)
... except dpkt.UnpackError:
... print data.split()[0]
...
'GET'