了解http请求是使用DPKT进行GET还是POST的最佳方法?

时间:2011-06-19 07:53:42

标签: python http

我正在使用函数dpkt.http.Request(),但有时http流不是请求。 有没有快速的方法在python或dpkt中知道我的请求是GET还是POST?

2 个答案:

答案 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'