【发布时间】:2011-06-19 07:53:42
【问题描述】:
我正在使用函数dpkt.http.Request(),但有时http流不是请求。 python 或 dpkt 中是否有一种快速方法可以知道我的请求是 GET 还是 POST?
【问题讨论】:
-
你可以试试 Fiddler:fiddler2.com/fiddler2
我正在使用函数dpkt.http.Request(),但有时http流不是请求。 python 或 dpkt 中是否有一种快速方法可以知道我的请求是 GET 还是 POST?
【问题讨论】:
尝试将其解析为 HTTP 请求并捕获 dpkt.UnpackError,这样如果不是 HTTP 请求,您的程序就不会死掉。
如果没有抛出异常,可以使用Request对象的.method来获取使用的方法。
【讨论】:
>>> 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'
【讨论】: