Skip to main content

A Python HTTP client focused on mimicking browser fingerprints.

Project description

httpmorph

Build codecov PyPI version License: MIT

Python Platforms Architectures

A Python HTTP client focused on mimicking browser fingerprints.

⚠️ Work in Progress - This library is in early development. Features and API may change.

Features

  • Requests-compatible API - Drop-in replacement for most Python requests use cases
  • High Performance - Native C implementation with BoringSSL for HTTP/HTTPS
  • HTTP/2 Support - Full HTTP/2 with ALPN negotiation via nghttp2 (httpx-like API)
  • Chrome 127-143 Fingerprints - Perfect JA4 fingerprint matching
  • Browser Fingerprinting - Realistic Chrome browser profiles (127-143)
  • TLS Fingerprinting - JA3N/JA4/JA4_R fingerprint generation with post-quantum crypto
  • HTTP/2 Fingerprinting - Perfect Akamai HTTP/2 fingerprint matching
  • Connection Pooling - Automatic connection reuse for better performance
  • Session Management - Persistent cookies and headers across requests

Installation

pip install httpmorph

Platform Support

httpmorph provides pre-built wheels for maximum compatibility:

Platform Architectures Python Versions
Linux x86_64, aarch64 (ARM64) 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
macOS Intel (x86_64), Apple Silicon (arm64)* 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
Windows x64 (AMD64) 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14

*macOS wheels are universal2 binaries supporting both Intel and Apple Silicon

Total Coverage: 28 pre-built wheels serving 99%+ of Python users

Requirements

  • Python 3.8 or later
  • No compilation required - batteries included!

Quick Start

import httpmorph

# Simple GET request
response = httpmorph.get('https://icanhazip.com')
print(response.status_code)
print(response.text)

# POST with JSON
response = httpmorph.post(
    'https://httpbin.org/post',
    json={'key': 'value'}
)

# Using sessions
session = httpmorph.Session(browser='chrome')
response = session.get('https://example.com')

# HTTP/2 support (httpx-like API)
client = httpmorph.Client(http2=True)
response = client.get('https://www.google.com')
print(response.http_version)  # '2.0'

Browser Profiles

Mimic real browser behavior with pre-configured profiles:

# Use Chrome fingerprint (defaults to Chrome 143)
response = httpmorph.get('https://example.com', browser='chrome')

# Use specific Chrome version (127-143 supported)
session = httpmorph.Session(browser='chrome143')
response = session.get('https://example.com')

# Available browsers: chrome, chrome127-chrome143

OS-Specific User Agents

httpmorph supports different operating system user agents to simulate requests from various platforms:

import httpmorph

# macOS (default)
session = httpmorph.Session(browser='chrome', os='macos')
# User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...

# Windows
session = httpmorph.Session(browser='chrome', os='windows')
# User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...

# Linux
session = httpmorph.Session(browser='chrome', os='linux')
# User-Agent: Mozilla/5.0 (X11; Linux x86_64) ...

Supported OS values:

  • macos - macOS / Mac OS X (default)
  • windows - Windows 10/11
  • linux - Linux distributions

The OS parameter only affects the User-Agent string, while all other fingerprinting characteristics (TLS, HTTP/2, JA3/JA4) remain consistent to match the specified browser profile.

Chrome Fingerprint Matching

httpmorph accurately mimics Chrome 127-143 TLS and HTTP/2 fingerprints with:

  • JA4 ✅ Perfect match (t13d1516h2_8daaf6152771_d8a2da3f94cd)
  • JA4_R ✅ Perfect match
  • JA3N ✅ Perfect match (normalized JA3: dcefaf3f0e71d260d19dc1d0749c9278)
  • HTTP/2 Akamai ✅ Perfect match (1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p)
  • User-Agent: Version-specific Chrome user agents
  • TLS 1.3 with correct cipher suites and extensions
  • HTTP/2 with Chrome-specific SETTINGS frame and pseudo-header order
  • Post-quantum cryptography (X25519MLKEM768)
  • Certificate compression (Brotli)

Verify your fingerprint:

import httpmorph

# Make a request to fingerprint checker
response = httpmorph.get('https://tls.peet.ws/api/all', browser='chrome143')
data = response.json()
print(f"JA4: {data['tls']['ja4']}")

# Expected: t13d1516h2_8daaf6152771_d8a2da3f94cd ✅

All Chrome 127-143 profiles produce exact JA4 matches with real Chrome browsers.

Advanced Usage

HTTP/2 Support

httpmorph supports HTTP/2 with an httpx-like API:

# Both Client and Session default to HTTP/2 (http2=True) like Chrome
client = httpmorph.Client()
response = client.get('https://www.google.com')
print(response.http_version)  # '2.0'

session = httpmorph.Session(browser='chrome')
response = session.get('https://www.google.com')
print(response.http_version)  # '2.0'

# Per-request HTTP/2 override (disable for specific request)
client = httpmorph.Client()  # Defaults to HTTP/2
response = client.get('https://example.com', http2=False)  # Disable for this request

Custom Headers

headers = {
    'User-Agent': 'MyApp/1.0',
    'Authorization': 'Bearer token123'
}
response = httpmorph.get('https://api.example.com', headers=headers)

File Uploads

files = {'file': ('report.pdf', open('report.pdf', 'rb'))}
response = httpmorph.post('https://httpbin.org/post', files=files)

Timeout Control

# Single timeout value
response = httpmorph.get('https://example.com', timeout=5)

# Separate connect and read timeouts
response = httpmorph.get('https://example.com', timeout=(3, 10))

SSL Verification

# Disable SSL verification (not recommended for production)
response = httpmorph.get('https://example.com', verify_ssl=False)

Authentication

# Basic authentication
response = httpmorph.get(
    'https://api.example.com',
    auth=('username', 'password')
)

Redirects

# Follow redirects (default behavior)
response = httpmorph.get('https://example.com/redirect')

# Don't follow redirects
response = httpmorph.get(
    'https://example.com/redirect',
    allow_redirects=False
)

# Check redirect history
print(len(response.history))  # Number of redirects

Sessions with Cookies

session = httpmorph.Session()

# Cookies persist across requests
session.get('https://example.com/login')
session.post('https://example.com/form', data={'key': 'value'})

# Access cookies
print(session.cookies)

API Compatibility

httpmorph aims for high compatibility with Python's requests library:

Feature Status
GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS Supported
JSON request/response Supported
Form data & file uploads Supported
Custom headers Supported
Authentication Supported
Cookies & sessions Supported
Redirects with history Supported
Timeout control Supported
SSL verification Supported
Streaming responses Supported
Exception hierarchy Supported

Response Object

response = httpmorph.get('https://httpbin.org/get')

# Status and headers
print(response.status_code)      # 200
print(response.ok)                # True
print(response.reason)            # 'OK'
print(response.headers)           # {'Content-Type': 'application/json', ...}

# Response body
print(response.text)              # Response as string
print(response.body)              # Response as bytes
print(response.json())            # Parse JSON response

# Request info
print(response.url)               # Final URL after redirects
print(response.history)           # List of redirect responses

# Timing
print(response.elapsed)           # Response time
print(response.total_time_us)     # Total time in microseconds

# TLS info
print(response.tls_version)       # TLS version used
print(response.tls_cipher)        # Cipher suite
print(response.ja3_fingerprint)   # JA3 fingerprint

Exception Handling

import httpmorph

try:
    response = httpmorph.get('https://example.com', timeout=5)
    response.raise_for_status()  # Raise exception for 4xx/5xx
except httpmorph.Timeout:
    print("Request timed out")
except httpmorph.ConnectionError:
    print("Failed to connect")
except httpmorph.HTTPError as e:
    print(f"HTTP error: {e.response.status_code}")
except httpmorph.RequestException as e:
    print(f"Request failed: {e}")

Platform Support

Platform Status
Windows ✅ Fully supported
macOS (Intel & Apple Silicon) ✅ Fully supported
Linux (x86_64, ARM64) ✅ Fully supported

All platforms use BoringSSL (Google's fork of OpenSSL) for consistent TLS behavior and advanced fingerprinting capabilities.

Building from Source

httpmorph uses BoringSSL (built from source) on all platforms for consistent TLS fingerprinting.

Prerequisites

Windows:

# Install build tools
choco install cmake golang nasm visualstudio2022buildtools -y

# Or install manually:
# - Visual Studio 2019+ (with C++ tools)
# - CMake 3.15+
# - Go 1.18+
# - NASM (for BoringSSL assembly optimizations)

macOS:

# Install dependencies
brew install cmake ninja libnghttp2

Linux:

# Ubuntu/Debian
sudo apt-get install cmake ninja-build libssl-dev pkg-config autoconf automake libtool

# Fedora/RHEL
sudo dnf install cmake ninja-build openssl-devel pkg-config autoconf automake libtool

Build Steps

# 1. Clone the repository
git clone https://github.com/arman-bd/httpmorph.git
cd httpmorph

# 2. Build vendor dependencies (BoringSSL, nghttp2, zlib)
./scripts/setup_vendors.sh  # On Windows: bash scripts/setup_vendors.sh

# 3. Build Python extensions
python setup.py build_ext --inplace

# 4. Install in development mode
pip install -e ".[dev]"

Note: The first build takes 5-10 minutes as it compiles BoringSSL from source. Subsequent builds are much faster (~30 seconds) as the vendor libraries are cached.

Development

# Clone and setup (includes building BoringSSL)
git clone https://github.com/arman-bd/httpmorph.git
cd httpmorph
./scripts/setup_vendors.sh

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=httpmorph --cov-report=html

# Run specific test markers
pytest tests/ -m "not slow"           # Skip slow tests
pytest tests/ -m "not proxy"          # Skip proxy tests (default in CI)
pytest tests/ -m proxy                # Only proxy tests
pytest tests/ -m integration          # Only integration tests
pytest tests/ -m fingerprint          # Only fingerprinting tests

Architecture

httpmorph combines the best of both worlds:

  • C Core: Low-level HTTP/TLS implementation for maximum performance
  • Python Wrapper: Clean, Pythonic API with requests compatibility
  • BoringSSL: Google's fork of OpenSSL, optimized and battle-tested
  • nghttp2: Standard-compliant HTTP/2 implementation

The library uses Cython to bridge Python and C, providing near-native performance with the ease of Python.

Contributing

Contributions are welcome! Areas where help is especially appreciated:

  • Windows compatibility
  • Additional browser profiles
  • Performance optimizations
  • Documentation improvements
  • Bug reports and fixes

Please open an issue or pull request on GitHub.

Testing

httpmorph has a comprehensive test suite with 350+ tests covering:

  • All HTTP methods and parameters
  • Chrome 127-143 fingerprint validation (JA4, JA4_R)
  • TLS 1.2/1.3 with post-quantum cryptography
  • Certificate compression (Brotli, Zlib)
  • Redirect handling and history
  • Cookie and session management
  • Authentication and SSL
  • Error handling and timeouts
  • Unicode and encoding edge cases
  • Thread safety and memory management
  • Real-world integration tests

Run the test suite:

pytest tests/ -v

Acknowledgments

  • Built on BoringSSL (Google) with post-quantum cryptography support
  • HTTP/2 support via nghttp2
  • Inspired by Python's requests and httpx libraries
  • Chrome 127-143 fingerprint matching with perfect JA4, JA3N, and HTTP/2 Akamai fingerprints
  • Certificate compression (Brotli) for Cloudflare-protected sites

FAQ

Q: Why another HTTP client? A: httpmorph combines the performance of native C with browser fingerprinting capabilities, making it ideal for applications that need both speed and realistic browser behavior.

Q: How accurate are the Chrome fingerprints? A: httpmorph achieves perfect JA4 matches for Chrome 127-143. Test your fingerprint at https://tls.peet.ws/api/all

Q: Is it production-ready? A: No, httpmorph is still in active development and not yet recommended for production use.

Q: Can I use this as a drop-in replacement for requests? A: For most common use cases, yes! We've implemented the most widely-used requests API. Some advanced features may have slight differences.

Q: Does it work with Cloudflare-protected sites? A: Yes! httpmorph supports certificate compression (Brotli) which is required for many Cloudflare-protected sites. We successfully tested with icanhazip.com and postman-echo.com.

Q: How do I report a bug? A: Please open an issue on GitHub with a minimal reproduction example and your environment details (OS, Python version, httpmorph version).

Support

License

MIT License - See LICENSE file for details.

Legal Disclaimer

FOR EDUCATIONAL AND RESEARCH PURPOSES ONLY

This software is provided for educational, research, authorized security testing, and development purposes only.

No Affiliation: This software is not affiliated with, endorsed by, or connected to Google, Chrome, or any browser vendors. All trademarks are property of their respective owners.

User Responsibility: You are solely responsible for your use of this software and any consequences. You must:

  • Obtain proper authorization before testing systems you don't own
  • Comply with all applicable laws, regulations, and terms of service
  • Respect robots.txt and website usage policies
  • NOT use this for illegal, unauthorized, or malicious activities

Prohibited Uses: Do not use this software for bypassing security measures without authorization, violating terms of service, unauthorized access, unauthorized web scraping, circumventing rate limits, fraud, harassment, or any illegal activities.

Disclaimer: The authors disclaim all liability for any damages arising from use or misuse of this software. This software is provided "AS IS" without warranties of any kind. Use at your own risk.

Agreement: By using this software, you agree to these terms. If you disagree, do not use this software.


Use this tool ethically and legally. You assume all risks and responsibilities.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

httpmorph-0.2.8-cp314-cp314-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.14Windows x86-64

httpmorph-0.2.8-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp314-cp314-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

httpmorph-0.2.8-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

httpmorph-0.2.8-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp313-cp313-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

httpmorph-0.2.8-cp312-cp312-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows x86-64

httpmorph-0.2.8-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

httpmorph-0.2.8-cp311-cp311-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.11Windows x86-64

httpmorph-0.2.8-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

httpmorph-0.2.8-cp310-cp310-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.10Windows x86-64

httpmorph-0.2.8-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp310-cp310-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

httpmorph-0.2.8-cp39-cp39-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.9Windows x86-64

httpmorph-0.2.8-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp39-cp39-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

httpmorph-0.2.8-cp38-cp38-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.8Windows x86-64

httpmorph-0.2.8-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (19.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

httpmorph-0.2.8-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (19.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

httpmorph-0.2.8-cp38-cp38-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file httpmorph-0.2.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2100bd55fc862b6d5912c89d19f89b40350681b5a7304a28adce177b7bac6769
MD5 4e76d6c4bbfc353f8fca990f5e786c68
BLAKE2b-256 05fe317b9e5c39b63698005281076daa9de43231d141d39508803445dbac61b8

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45b1929749be0fc32b231c70da0ca9749f763f3024b8eb39b645244b42a6942c
MD5 610f2df0b6f4464ba03c864b1d07dfa2
BLAKE2b-256 de00629a9c65dfd56cce385f26d2990acc591a8eb474d0ce4e2c5ef6c6ceb081

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5a1ac7d6d1313309392be40a1f06995aae791eca6f1570705fa0fe5e1d8c2d8
MD5 d7d38741df00bc5de710319e47535d32
BLAKE2b-256 c7238658aa69e589fbdf4e96248c6fc9549eabbb1c082b0669524c07ed7c5ffa

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd96022ca74712abdecf84551b40dd5af81ec069f90a07206e4d842ba77018a1
MD5 daff42c95ad156a9c7eb05d0bc08cc29
BLAKE2b-256 1011f9e7ab41bc35d40878f8be1ac31b2de1242b416c6c9a2c3f03121bef8cd1

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3bc8b101c4d35609a16c17af9d7e7ea6953157f74604e840df02cf9969f3e5e7
MD5 c3cdbcfcd5bc460dbd69f737b2e47f74
BLAKE2b-256 564ae612b13528f30e7a5cefb8d7e61ebe5ec4e3b5324151ebd3de0da0df0835

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 037544dc3da9b1eb2ecb25f75e5eafaa5567e6f40e61a628c1f83e6d7349063c
MD5 9fd48b537932ceb64e03e0759b8e3200
BLAKE2b-256 46f735bce99582e95620fde91df94b16689937df1ca7cc0d2165a9a3f4439e2c

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e34110e3cf02b176d4227a6e9d17642aa9ac0d55f4561d1ed17b116c25d5f2cf
MD5 a5b8b53d965ac23c2713a2e0122e56ae
BLAKE2b-256 024e69283255ef5aa087287c6ad2484de1ae5adab43b5fd8d4e5a21cb2c4206b

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f0c5ce2e6a542801bec4e14dc76be727aad5c70c0edc8e169f85d1b000e4820
MD5 5f99e21af066c25d96fc2ec26b69016b
BLAKE2b-256 709efadbe26c251e46d40798c8fa07f8ba2e6e020a66b6b7f97ca0642dd6b321

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9115c9a9ea4e11d6d1c167d372b54bb4f1cc6d4ec50b3e86338b220ffc12d8de
MD5 10151aa6e0b3dfac5409b71ebaa40a9d
BLAKE2b-256 86b14c668935cce9b6b46980cc5f7e4c78d90955c4b4f6e7015ef158b4a6a2c6

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a783b69b1c17b4a4c11bdfbcc6091cb52b803ea6b34f70a7b99db52bf69e1826
MD5 2084eab5439cbc7ee6ca0c6453848264
BLAKE2b-256 38b941c05077f7ed5ba7dd5e45af6e8fdf9fc7c0b3dca2e8fd6e7312f9d431c8

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6bbab2c060b1795b30473279a1cf4d41ead8fb82c3c61029ad6d88bcc399118c
MD5 1d03af5357fa73670acbbe01de77f710
BLAKE2b-256 4fdf2c95bf9d0249f5a9a68c9dd98d32858fb0ec5afdc2a1af28709a45527eb0

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f570cc3ca38986e1771b96c9d637c3bea2fcc0dede67f7ee7fc653686bb3b482
MD5 932856cd96631033ecd23cbbd9fe1c9e
BLAKE2b-256 72bfb072bc4455ef5886777522e104b3045a270a7b3162ad725a54a4c1dfe6ed

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8c88482902ba399ef4e958a994c149b4362d1e66ce49c0fe53b909552a0fa1bb
MD5 b98ab278c9f9e4e067805ce450610744
BLAKE2b-256 accb962a77686b6d13dec493b5f7956d5d9c914cdff79a374c7fe8938cbf408c

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43a3b61eb29b8ef91a7f0a25b041def75a9ae4ec7caf86f2ea77c7cc49a08e88
MD5 690a4de05b6ea836dec92ac6a0af9a36
BLAKE2b-256 c32f928868ecdf59b7c85bb5db185ac300f33e1f7ba01bff37333dda9a3d430a

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ac8230be34848afc8f39d253c5e9dbcc38f109910c6d59a7ad99e1e26e2dad33
MD5 c0cda38273e38c144dda835b43450934
BLAKE2b-256 8316bc4a9b1b34938c36c53acfa875b0620c22519e3218bdcce5eff355160d5f

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d43bfdec06c81bed222d87a758012d85cd73b5508b53588edf689f1024a5c3dd
MD5 4ccd7c8f390f4e48a16cb2763d5f1afd
BLAKE2b-256 da87fb8791d2d9b249a9b1136b4d0a7e558a401697c8ffe516f6247da78f7cc1

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 14655cf28dfce9121b30402d412fcfe5306b9f799b38f73c1a06dfad057b340e
MD5 5bb2b08427e1cef9565dbd054919782b
BLAKE2b-256 385739d78ccf019c015e2542eba5613770214abbbe0db90891c89ff151a6b6f8

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95002c3648fc5631faa71b6483d9902eaa64fd468c23bf9e01058e95e14238d6
MD5 da692ab50f6dfb8048d2573dd3993e87
BLAKE2b-256 1bad907560cafb8ab2a09e346f23199eeb822dc39c2f6786c34379864d298229

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f6e50dac50ee2b74190f9a33d19a7828ac6ad7011f7517dc933e79d76ed0886
MD5 b9f9c551017301d37cb6033d9678709e
BLAKE2b-256 d869f791860c93d0f43bd584af01d5e1660a34eeff4fa31f9b50cb7d35beeb8e

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b02da2875c3ff623d32134082fe9f8a4fd27ef92e81c978cb17b330340197399
MD5 76d20d433b18f5aed4e738eebec7b4e0
BLAKE2b-256 dd6a6b0bfd8bb82c668a5effba8bf35843107fdef6cb9344d2a030f68335b59b

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 38516df6c14f3af851208b9eaf9120bab35b50fecbe8a341f411ca616b6fd659
MD5 9d5c416005606ff8f36a59852db8b267
BLAKE2b-256 963a72aa944a87261ba3c2dc19ab6d78c0681c91b14203af15456b1e87a61bf9

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a4417b3dc5a92fd05a3ff2d2f672937f263a3bfdc14181eac65fdf696ae1e920
MD5 bc95ef97fd4dfd677d40242328b9b1da
BLAKE2b-256 8cf2788ec3f26666e9ee773aa1fc635810626337147a73b4fd5935aacdc1f7ce

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 87e8d99dc4e6b8bda0a1e5040ac27adb22d526e690675cdf9b64c6917c0a46db
MD5 7f8fee7709e5cb0d5ed43acfe0254cad
BLAKE2b-256 06de74ab1bf5e050a55f06609428a1b7b0df7237f097e2f8812c21278b61f47a

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28457d6da442118ec4c5ef7d1f5cb2b82be575e397d321250e1a844b6149cf09
MD5 83f4f6008dfeb1d7f1d8890c4a47a29f
BLAKE2b-256 06f842fc506722a372fef86ffb7ce559b8e2fa356a143431695968f39e3e1dbc

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: httpmorph-0.2.8-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for httpmorph-0.2.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a09dc0e1c1d95a18e1aa94d49669d1d798fb438ffff4cb16dd50cdbb0627c423
MD5 4839fee256921a73a1e5723cb229c905
BLAKE2b-256 999ad02f261c10a2373ef9dee4ed03707863f4e10c398d228df00228aa1ffdb8

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab3d8a59804cecf6d54531e41b144256e0b3fde4dcbc7d8c4e710ac0e44cbb44
MD5 ac5a804654a0dc3530d5219c3ab88477
BLAKE2b-256 a836acf8dd96751e8b559bb19639977f6d7f4183d3d2d222db1e1d584c7b56cd

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 efba612cef897f7ec1515f407a54197448afbe2b384b1218d3496efcf022bfa1
MD5 decdfe3f69ad3efee0a7948336f734cf
BLAKE2b-256 dda9cb9db4f925953111caf7d7c975c8970c47ef643c70a4defdad3e8e88ff0d

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.8-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.8-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9e54c1966032d31b1fa259f246b92de0da42be9d80ed47db3dc6be4c8e486e3
MD5 e2f7628b4c0a5c1e0058599d802099b5
BLAKE2b-256 bad25f470060da23ed9fbffe2f73bcc4dc2f3565a8932e9738a37afb35dfab6d

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