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_paths: returns the request path parts 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_paths: {}".format(RequestParser.request_paths.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.9.30

  • Updated: Merged request_path and request_pathParams into request_paths. request_paths: returns the request path parts as JSON_DUPLICATE_KEYS object
  • Updated: Fixed issues related to encoding

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.9.30.tar.gz (10.9 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.9.30.tar.gz.

File metadata

File hashes

Hashes for tp_http_request_response_parser-2025.9.30.tar.gz
Algorithm Hash digest
SHA256 3ae5e2266ed771c436bc95b34725d7174cb96b62c749194c0e641c91c3854f9a
MD5 d5f75ce6a479af5d95e0e20246f2101e
BLAKE2b-256 50baeeaa8e95a10d549264199aff6d6af92031f4763b84f15a419d5ba92ca7b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tp_http_request_response_parser-2025.9.30-py3-none-any.whl
Algorithm Hash digest
SHA256 eb668547ddc902c0a295cf37be047c94cf9431c56c734ff4ccdb8bf9d43bee98
MD5 41c4cf296202339cd1e5077441b2cbec
BLAKE2b-256 e6d161dab2badb5738988dc0e9a572b2abd7183d4ec1a42f5b7e5729c5dfb6dc

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