【问题标题】:Best way to know if http request is GET or POST with DPKT?使用 DPKT 了解 http 请求是 GET 还是 POST 的最佳方法?
【发布时间】:2011-06-19 07:53:42
【问题描述】:

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

【问题讨论】:

标签: python http


【解决方案1】:

尝试将其解析为 HTTP 请求并捕获 dpkt.UnpackError,这样如果不是 HTTP 请求,您的程序就不会死掉。

如果没有抛出异常,可以使用Request对象的.method来获取使用的方法。

【讨论】:

    【解决方案2】:
    >>> 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'
    

    【讨论】:

    • 这是不正确的,因为 dpkt 并不总是可以解析请求。
    • 已扩展答案以处理杂乱的请求。
    • 如果这解决了您的问题,请点击勾选接受答案。
    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2010-11-25
    • 2018-01-17
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多