Skip to main content

converts a collection of HTTP headers into a dictionary structure for automated analysis; creates parsed and analyzed objects; accepts strings, lists, or dictionaries of header values

Project description

HeaderBreakdown

converts a collection of HTTP headers into a dictionary structure for automated analysis; creates parsed and analyzed objects; accepts strings, lists, or dictionaries of header values

Installation

pip install headerbreakdown
or
pip3 install headerbreakdown
or
python3 -m pip install headerbreakdown

Example Output

{
    "_direction": "response",
    "_httpversion": "HTTP/1.1",
    "_responsecode": "302",
    "_responsephrase": "Found",
    "location": {
        "key": "Location",
        "value": [
            "https://www.google.com/?gws_rd=ssl"
        ]
    },
    "cachecontrol": {
        "key": "Cache-Control",
        "value": [
            "private"
        ]
    },
    "contenttype": {
        "key": "Content-Type",
        "value": [
            "text/html; charset=UTF-8"
        ],
        "subvalues": [
            "charset=UTF-8",
            "text/html"
        ],
        "microvalues": [
            {
                "microkey": "charset",
                "microvalue": "UTF-8"
            }
        ]
    },
    "date": {
    ...

Example Usage

from headerbreakdown import HeaderBreakdown as hb
import json
# header with multiple Host and User-Agent values
someheader = "GET /?gws_rd=ssl HTTP/1.1\r\nHost: www.google.com\r\nHost: www.bing.com\r\nHost: www.yahoo.com\r\nConnection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/99.0\r\nCookie: 1P_JAR=2021-03-13-04"
# create the object
h = hb(someheader)
# print only the parsed version of the header
print(h.parsed)
# print the analyzed version with subvalues, minivalues, and microkeys and microvalues
print(h.analyzed)
# print as json
print(json.dumps(h.analyzed, indent=4))
# etc

Available Attributes

attribute type description
parsed dict main structure of parsed header information
analyzed dict main structure of parsed and analyzed header information with subvalues, minivalues, and microkeys and microvalues
_direction string request or response
_method list request verb; length of one, unless an illegal header is present
_host list request host; length of one, unless an illegal header is present
_path list request path; length of one, unless an illegal header is present
_httpversion string HTTP version being used
_responsecode string response code number only, as a string
_responsephrase string response phrase only
_keys list normalized keys in the analyzed object (same as obj.keys() but omits the sub/mini/micro items)
  • Note that method and path are also presented as normalized keys alongside other request header keys (host will also be present)

Releases and Updates

  • 2022-08-11
    • minor edits and comments for readability
    • made hb_unittest.py and commented out unit_tests() in headerbreakdown.py
  • 2022-08-10
    • converted method and path to lists to accomodate illegal headers such as multiple methods and paths
    • fixed attributes to only set if not already present
      • prevents "requestrequest" or "responseresponse" for _direction if illegal headers are set
  • 2022-03-25
    • complete overhaul
    • accepts strings, lists, and dictionaries as input
    • simplified output dict structure
    • standardized keys
    • removed json outputs
    • TO DO - convert metadata string attributes to lists (smuggling)
  • 2021-04-06
    • added nested_direction_json/output, ex. {"headers":{"request":{...}}}
    • so direction gets captured and headers do not get overwritten if processing a capture with both sides of the communication
    • the nested_direction_* attributes will be type None when processing a single, direction-ambiguous header (ex. "Set-Cookie: k1=v1;k2=v2")
  • 2021-04-01
    • minor fix for HTTP/ detection
  • 2021-03-23
    • minor edits, added summary and nested_output/nested_json attributes, ex. {"headers":{...}}
  • 2021-03-13
    • first release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

headerbreakdown-0.1.5.tar.gz (6.5 kB view hashes)

Uploaded Source

Built Distribution

headerbreakdown-0.1.5-py3-none-any.whl (7.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page