Skip to main content

Parse/ Unparse the HTTP Request/ Response

Project description

TP-HTTP-Request-Response-Parser - PyPI

Parse/ Unparse the HTTP Request/ Response



✨ Features

  • Parse raw HTTP Request/ Response strings
  • Access and manipulate all HTTP fields: method, path, query, fragment, headers, cookies, body, etc
  • Reconstruct HTTP Request/ Response from parsed objects, with automatic Content-Length update
  • Easy integration for security testing, automation, or log analysis tools

🛠️ Installation

From PyPI:

pip install tp-http-request-response-parser

From Source:

git clone https://github.com/TPCyberSec/TP-HTTP-Request-Response-Parser.git --branch <Branch/Tag>
cd TP-HTTP-Request-Response-Parser
python -m build
python -m pip install dist/tp_http_request_response_parser-<version>-py3-none-any.whl

📘 Basic Usage

TP_HTTP_REQUEST_PARSER

  • request_method: returns the HTTP method (e.g., GET, POST)
  • request_path: returns the request path (e.g., /api/v1/data)
  • request_pathParams: returns parsed path parameters as JSON_DUPLICATE_KEYS object
  • request_queryParams: returns parsed query parameters as JSON_DUPLICATE_KEYS object
  • request_fragment: returns the URL fragment
  • request_httpVersion: returns the HTTP version (e.g., HTTP/1.1, HTTP/2)
  • request_headers: returns all request headers as JSON_DUPLICATE_KEYS object
  • request_cookies: returns all cookies as JSON_DUPLICATE_KEYS object
  • request_body: returns the request body as JSON_DUPLICATE_KEYS object
  • unparse: reconstructs the HTTP request string from the parsed data. If update_content_length=True, automatically updates the Content-Length header
from tp_http_request_response_parser import TP_HTTP_REQUEST_PARSER

rawRequest = """GET /v1/promo/extension HTTP/2
Host: d2y7f743exec8w.cloudfront.net
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36
Connection: close
Cache-Control: max-age=0

"""

# Parsing HTTP Request
RequestParser = TP_HTTP_REQUEST_PARSER(rawRequest, ordered_dict=True)

print("- request_method: {}".format(RequestParser.request_method))
print("- request_path: {}".format(RequestParser.request_path))
print("- request_pathParams: {}".format(RequestParser.request_pathParams.dumps(indent=4)))
print("- request_queryParams: {}".format(RequestParser.request_queryParams.dumps(indent=4)))
print("- request_fragment: {}".format(RequestParser.request_fragment))
print("- request_httpVersion: {}".format(RequestParser.request_httpVersion))
print("- request_headers: {}".format(RequestParser.request_headers.dumps(indent=4)))
print("- request_cookies: {}".format(RequestParser.request_cookies.dumps(indent=4)))
print("- request_body: {}".format(RequestParser.request_body.dumps(indent=4)))
print(RequestParser.unparse(update_content_length=True))

TP_HTTP_RESPONSE_PARSER

  • response_httpVersion: returns the HTTP version from the response (e.g., HTTP/1.1, HTTP/2)
  • response_statusCode: returns the response status code (e.g., 200, 404)
  • response_statusText: returns the status text (e.g., OK, Not Found)
  • response_headers: returns all response headers as JSON_DUPLICATE_KEYS object
  • response_cookies: returns all response cookies as JSON_DUPLICATE_KEYS object
  • response_body: returns the response body as JSON_DUPLICATE_KEYS object
  • unparse: reconstructs the HTTP response string from the parsed data. If update_content_length=True, automatically updates the Content-Length header
from tp_http_request_response_parser import TP_HTTP_RESPONSE_PARSER

rawResponse = """HTTP/2 200 OK
Content-Type: application/json; charset=utf-8
Server: nginx
Date: Mon, 21 Aug 2023 03:55:08 GMT
Etag: W/"846e0a9b390c273d2d7a6843085411d1"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 06024e22-f233-4517-b0f6-f444c8464e7b
Strict-Transport-Security: max-age=63072000; includeSubDomains
Strict-Transport-Security: max-age=63072000; preload
Vary: Accept-Encoding,Accept
X-Cache: Miss from cloudfront
Via: 1.1 19175f36fb9c16ba394561bae28598da.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: SGN50-P2
X-Amz-Cf-Id: eKssgTNGDCswPiQtSYFD1MRNBJCTHEbnQp4MQjtQx2B4eM7oqXYIHg==

{"ok":true,"promo":[]}"""

# Parsing HTTP Response
ResponseParser = TP_HTTP_RESPONSE_PARSER(rawResponse, ordered_dict=True)

print("- response_httpVersion: {}".format(ResponseParser.response_httpVersion))
print("- response_statusCode: {}".format(ResponseParser.response_statusCode))
print("- response_statusText: {}".format(ResponseParser.response_statusText))
print("- response_headers: {}".format(ResponseParser.response_headers.dumps(indent=4)))
print("- response_cookies: {}".format(ResponseParser.response_cookies.dumps(indent=4)))
print("- response_body: {}".format(ResponseParser.response_body.dumps(indent=4)))
print(ResponseParser.unparse(update_content_length=True))

👥 Contributors


📝 CHANGELOG

TP-HTTP-Request-Response-Parser v2025.8.30

  • Support for parsing and reconstructing HTTP Request/ Response
  • Access all HTTP fields as JSON_DUPLICATE_KEYS objects
  • Automatic Content-Length update on unparse

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

tp_http_request_response_parser-2025.8.30.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file tp_http_request_response_parser-2025.8.30.tar.gz.

File metadata

File hashes

Hashes for tp_http_request_response_parser-2025.8.30.tar.gz
Algorithm Hash digest
SHA256 7d8c49765af1da5940bbef577d0b8940c4a2baea53e173cdd030238b6d03aea8
MD5 bfe8e36f0b9b0b5f4cc95ab52e280d57
BLAKE2b-256 0058a73b5a13c15eabaf2da3abab16b75ec88b9f386b04a36b23871433e78913

See more details on using hashes here.

File details

Details for the file tp_http_request_response_parser-2025.8.30-py3-none-any.whl.

File metadata

File hashes

Hashes for tp_http_request_response_parser-2025.8.30-py3-none-any.whl
Algorithm Hash digest
SHA256 a9f3826151177678134e78b476e8acfc2a515d43edc9bef8fd700fa6f6edf7ed
MD5 a24b9c0bf5db44d68d9bbab8e40594f1
BLAKE2b-256 da4557f27fa03b504f55a51e4ca13802b80811ec152e697a69c4b50be6899856

See more details on using hashes here.

Supported by

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