2011-06-19 41 views

回答

1

嘗試解析它作爲HTTP請求,並捕獲dpkt.UnpackError,以便您的程序不會死亡,如果它不是HTTP請求。

如果沒有拋出異常,則可以使用Request對象的.method來獲取使用的方法。

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' 
+0

這是不正確的,因爲dpkt並不總是能夠解析請求。 –

+0

擴大了處​​理凌亂請求的答案。 –

+0

是的我會這樣做,謝謝 –

相關問題