Skip to main content

A Python HTTP client focused on mimicking browser fingerprints.

Project description

httpmorph

Build codecov PyPI version License: MIT

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)
  • Browser Fingerprinting - Realistic browser profiles (Chrome and it's variants)
  • TLS Fingerprinting - JA3 fingerprint generation and customization
  • Connection Pooling - Automatic connection reuse for better performance
  • Session Management - Persistent cookies and headers across requests

Installation

pip install httpmorph

Requirements

  • Python 3.8+
  • Windows, macOS, or Linux
  • BoringSSL (built automatically from source)
  • libnghttp2 (for HTTP/2)

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
response = httpmorph.get('https://example.com', browser='chrome')

# Use Firefox fingerprint
session = httpmorph.Session(browser='firefox')
response = session.get('https://example.com')

# Available browsers: chrome, firefox, safari, edge

Advanced Usage

HTTP/2 Support

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

# Enable HTTP/2 for a client (default is False)
client = httpmorph.Client(http2=True)
response = client.get('https://www.google.com')
print(response.http_version)  # '2.0'

# Enable HTTP/2 for a session
session = httpmorph.Session(browser='chrome', http2=True)
response = session.get('https://www.google.com')
print(response.http_version)  # '2.0'

# Per-request HTTP/2 override
client = httpmorph.Client(http2=False)  # Default disabled
response = client.get('https://www.google.com', http2=True)  # Enable 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}")

Performance

httpmorph is built for speed with a native C implementation and BoringSSL for optimized TLS operations.

Benchmark vs requests library (30-second test, macOS Apple Silicon):

  • Throughput: 49.4% faster on average (1,056 vs 707 req/s)
  • GET requests: 1,032 req/s vs 709 req/s (1.46x faster)
  • POST requests: 1,080 req/s vs 705 req/s (1.53x faster)
  • Latency: 33.1% lower on average (0.95ms vs 1.41ms)

See detailed benchmark results for full metrics including performance charts.

Performance Features

  • Native C implementation with minimal Python overhead
  • BoringSSL for optimized TLS operations
  • Connection pooling reduces handshake overhead
  • HTTP/2 multiplexing for concurrent requests
  • Efficient memory management

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 270+ tests covering:

  • All HTTP methods and parameters
  • 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)
  • HTTP/2 support via nghttp2
  • Inspired by Python's requests library
  • Browser fingerprints based on real browser implementations

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: 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: 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


httpmorph - Fast, compatible, and powerful HTTP for Python.

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.1-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

httpmorph-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

httpmorph-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

httpmorph-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

httpmorph-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

httpmorph-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp39-cp39-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.8Windows x86-64

httpmorph-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

httpmorph-0.2.1-cp38-cp38-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d7726a0fee99bc9a12a6a6282c94516cb9e8098bdec7ee8730449f98e39c1065
MD5 59e8027a1537ed54f6a7b93f9d32deb3
BLAKE2b-256 53fd9f10aa5ac92df1cd2122ba0e973dfb80492b15204c50f293ed9e5d883963

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5474254948f3e770afc46f51b501a0b42240edc6d1d287eb0426472e1f0bd2d9
MD5 19e1effe0dc5795f36e6f575e156b00a
BLAKE2b-256 a635ff86df56bc25035ac0dfa4373bf1d44169d8774c8d65fcf59cea1c09ac35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3a96ceef3ce6edb5ba48bf834c4dbc4b72e5febe217d0869826ab37cf4e5c3b
MD5 a36e26a411e824f72414c8e6e0c23d2c
BLAKE2b-256 96bf2887daa28242881b9842055500606bc866d488d2b6cb67b0f1076e5d768c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cdc4b44315570364ca293d762bbd32b6d67cab6f6ccd8b4cb4ef7a3e6ae5dcfd
MD5 bd995d079c7ea8b989eab3ee51e8088d
BLAKE2b-256 abbb49315cb3b8f39aff2da00d35ec3068724d3f88948b2e77a1dee0c6ad6a6c

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ffcda37402c22b27651216077f8f1f99d523ff4af5c294bd8dc6de15b8806a9c
MD5 3d658205101f1ba4bc963d54acdd1ecb
BLAKE2b-256 a287182a7ac6a2724d1962174431ec06cb3ed015a020ab98f3c09d897bbc5371

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 52290e8a8cfc038a9444e7720c35847263dcea59995d9837ebef2e79444619ca
MD5 12fc9aa1c62ebf8c815fcec3e09ccf42
BLAKE2b-256 37c3a8d0ece16ddab65a0a1a227b1883bc6c96b2c40e7182b1dca89bce378ee6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8f64f18ea15b136d6320cdcea893830f261c2f4f2a625b373bbeea2bd335ccc4
MD5 002c6c666e65369a0569b3e6f60aa73a
BLAKE2b-256 5af30c2aa1d9e4107dcc2d284bf0f0bd6c5197e78fd761aaf1570948f232f78a

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ae7ac74bf434e6c1ebece6fe24798fae146d6169d2ab5fb201a8f3a181aef79
MD5 4262c2b6d3a6ad48fb345c7c6c1890dc
BLAKE2b-256 48bda3344686536eb4b2349e58a6b78b4a43b3397ef7c9e31bd1d4cdb94ab24c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 92d0b97b4f9779edf6d437a4d59b2cbdddb15cda1ccae821a3e6abca176307ba
MD5 785d2314e1e11112651bf8d651ad6e86
BLAKE2b-256 eb9eedb4169dec5a55a5d8a3474d672c12049949ffb90ac63edcf0db233a81a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 da2c5599e68e143eb9d86bded0e80c834c9830567fc6ee260cf19a4ea130c48c
MD5 7c847403641ededeb9f1e7820bcf340d
BLAKE2b-256 7578d08837693b8e04dfe0bc98c8ae0435f64769940e669a6f907411831719cd

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78a9adda3c827cd8b6ec10c2e6f65707302090180c0ddbf970a4f7eeda47b867
MD5 20b31843dc51c594fc6183d8e1a733b5
BLAKE2b-256 babde3262c180369ed845eeb868483218d1824e2447b0ea3529a6a5b03ce1d7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a42a85b93ff7ab8527eeb32138c666f6a2ac16e4dbaea0331bf537b614c4effa
MD5 e92bf61332243d02b2f39e9c627d671c
BLAKE2b-256 997b6c9c77ba346c9557a9af75e463f3d4a70e40e25302dc48218db4a0a03b12

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 35ddd6ae6374e31f6cad82a7e4bc9637c706e4f6da9bc84b5ce3c06f9bc97266
MD5 1696f4ff46a8a8f98146e4132721d3bc
BLAKE2b-256 465d7d34b22a47c6248139c01a188f4b52305a3a0e6d1d93436343fa4a2d218f

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f17338892336e6eac868c4dd4d49e00e0916ba7fce79a745fd7b4b39d188a1d0
MD5 5a401aff254a8c4950ba2f98a7def780
BLAKE2b-256 af4382014677616874315583012dabcc27eb52b19cf96c35719b54d376cf445c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e1547d6de98bc2385be18f1bf5e7b92efe07e07af494e409f318c145e1aafaa
MD5 c381a5aa99bc3bdf520ca7e305686c6c
BLAKE2b-256 5c2b37f47acbf65348eb7dad6fad210a7e7764b7bca9b330af0716b94c3c8fed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.2.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ab778bb532c44e27ad6887dac9dae45c23a10aaa584789e8326da7e68c7e6878
MD5 86e422b04dbc7b7c764802ec874313de
BLAKE2b-256 f38efbf589048f6076a3dc5b6f25b63d6eb929d0f0d2fc00fd64ba2c141cf206

See more details on using hashes here.

File details

Details for the file httpmorph-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e47792d63278cf8e56df367dd71473a9a7cc96044ae94c5661acb6cb3be622b
MD5 48ce1928795d34ce16ca7d723bf9860c
BLAKE2b-256 a60778ab928c2b36edb72bc22e2ffbb172e64ec43eec7ff32f242ef13c78d374

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.2.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41f611ce9f5b564d886bc9a0579197e7b7089f5b52a8d10868ade82f1d5eb38c
MD5 bbe2014140c6de0b4009c229bcde15e4
BLAKE2b-256 f5c696a4cb0fc0bf1af141caab099d1982114cfb19c650e739ee96082010b88a

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