Parse/ Unparse the HTTP Request/ Response
Project description
✨ 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tp_http_request_response_parser-2025.8.30.tar.gz.
File metadata
- Download URL: tp_http_request_response_parser-2025.8.30.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d8c49765af1da5940bbef577d0b8940c4a2baea53e173cdd030238b6d03aea8
|
|
| MD5 |
bfe8e36f0b9b0b5f4cc95ab52e280d57
|
|
| BLAKE2b-256 |
0058a73b5a13c15eabaf2da3abab16b75ec88b9f386b04a36b23871433e78913
|
File details
Details for the file tp_http_request_response_parser-2025.8.30-py3-none-any.whl.
File metadata
- Download URL: tp_http_request_response_parser-2025.8.30-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9f3826151177678134e78b476e8acfc2a515d43edc9bef8fd700fa6f6edf7ed
|
|
| MD5 |
a24b9c0bf5db44d68d9bbab8e40594f1
|
|
| BLAKE2b-256 |
da4557f27fa03b504f55a51e4ca13802b80811ec152e697a69c4b50be6899856
|