2011-06-19 2 views

Répondre

1

Essayez de l'analyser en tant que requête HTTP et de saisir dpkt.UnpackError afin que votre programme ne meurt pas s'il ne s'agit pas d'une requête HTTP.

Si aucune exception n'a été levée, vous pouvez utiliser .method de l'objet Request pour obtenir la méthode utilisée.

1
>>> import dpkt 
>>> r = dpkt.Request('GET/HTTP/1.0\r\n\r\n') 

Finding the HTTP verb is easy:

>>> r.method 
"GET" 

En cas de difficulté analyse des données de la requête HTTP, il est impossible d'obtenir les données de source d'origine en arrière à cause de la façon dont les poignées méthode dpkt.Request.unpack exceptions.

En tant que quelque chose de contournement comme cela peut être pratique:

>>> data = 'GET/HTT' #malformed request 
>>> try: 
...  r = dpkt.Request(data) 
... except dpkt.UnpackError: 
...  print data.split()[0] 
... 
'GET' 
+0

Cela est inexact, car dpkt ne peut pas toujours analyser la demande . –

+0

Avoir élargi la réponse pour faire face à des demandes malpropres. –

+0

Oui, je vais le faire comme ça, merci –

Questions connexes