Лучший способ узнать, является ли http-запрос GET или POST с DPKT?

1

Я использую функцию dpkt.http.Request(), но иногда поток http не является запросом. Есть ли быстрый способ в python или dpkt узнать, является ли мой запрос GET или POST?

  • 0
    Вы можете попробовать Fiddler: fiddler2.com/fiddler2
Теги:
http

2 ответа

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

Легко найти HTTP-глагол:

>>> 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
    Расширены ответы для решения беспорядочных запросов.
Показать ещё 2 комментария
1

Попробуйте разобрать его как HTTP-запрос и поймать dpkt.UnpackError, чтобы ваша программа не умерла, если это не HTTP-запрос.

Если никакое исключение не было выбрано, вы можете использовать .method объекта Request для получения используемого метода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню