Skip to main content

Morph into any browser - High-performance HTTP client with dynamic fingerprinting using C, io_uring, and BoringSSL

Reason this release was yanked:

development preview release

Project description

httpmorph

codecov

A high-performance HTTP client for Python with advanced browser fingerprinting capabilities. Built with C for speed, designed for compatibility.

Features

  • Requests-compatible API - Drop-in replacement for most Python requests use cases
  • High Performance - Native C implementation with BoringSSL for blazing-fast HTTP/HTTPS
  • HTTP/2 Support - Full HTTP/2 with ALPN negotiation via nghttp2
  • Browser Fingerprinting - Realistic browser profiles (Chrome, Firefox, Safari, Edge)
  • 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')

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

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/yourusername/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/yourusername/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 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: What about Windows? A: Windows support is in active development. The core functionality works, but some platform-specific features are still being refined.

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.1.0-cp313-cp313-win_amd64.whl (840.1 kB view details)

Uploaded CPython 3.13Windows x86-64

httpmorph-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

httpmorph-0.1.0-cp312-cp312-win_amd64.whl (840.1 kB view details)

Uploaded CPython 3.12Windows x86-64

httpmorph-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

httpmorph-0.1.0-cp311-cp311-win_amd64.whl (839.8 kB view details)

Uploaded CPython 3.11Windows x86-64

httpmorph-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

httpmorph-0.1.0-cp310-cp310-win_amd64.whl (839.4 kB view details)

Uploaded CPython 3.10Windows x86-64

httpmorph-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

httpmorph-0.1.0-cp39-cp39-win_amd64.whl (839.6 kB view details)

Uploaded CPython 3.9Windows x86-64

httpmorph-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

httpmorph-0.1.0-cp38-cp38-win_amd64.whl (841.1 kB view details)

Uploaded CPython 3.8Windows x86-64

httpmorph-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

httpmorph-0.1.0-cp38-cp38-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 840.1 kB
  • 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.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 13024414cf98efcfa8ada6efa51240d9ca2b0a6e1ac9a928a12af6d2cbb52151
MD5 a310a98ceb6aecc2d9daf1abf593ac2d
BLAKE2b-256 bcea255475188e9f495f7617698e3222ad6a97737c83f1f95a63093a6ed6b573

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30133a8ed8750a0b651f07428a049f941e53643be4e9a16f4c0eb13de5b4fedc
MD5 5435807dc971ddfe452905aa4fc9418a
BLAKE2b-256 8e11050a5d74032b9a0954591ca869aea8fb72550b22f0f41396e540ffbc4973

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e295d1025abf952c062c1a450acfaa8b2b6fe74857716c0ed3ccba7526b05fd0
MD5 8c779db4a75c23fc7e3d41a27dcf30eb
BLAKE2b-256 8f0d0b7ea311f4b2465de479ef5f062a9775dbf0f6160dcaca36fad2930eb37f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 840.1 kB
  • 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.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bfdf5640185d88e2a5628e250859abaf9eecc414d85d725e9e480465d7c24788
MD5 b699b79d0090b873700119e4581e5b47
BLAKE2b-256 87e68e6a72935f9ad0ec3e556561163f924c151345273f8c6868cf62d8aed295

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea14cf07641c14cc3761ab32a7af4a2dabb93c1cfed434ce2f7c5ab5fe0958ae
MD5 405adfc8bd02fce1823fedf279a575da
BLAKE2b-256 db8ea469f2f1bc16a469ffcc40859e03cb5be73bdd5fe3e0ca5a117616c77816

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 627872d33a22f737914b5b9b45373668151a6ac9d860034814bc9b0cd646fb64
MD5 308fb4566297ee6d9bf247edd3d09d5e
BLAKE2b-256 e79aab8d6996a95acd6f34e4f77d0b133b14a9d26bd232b93951b55b1efee54a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 839.8 kB
  • 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.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bb15f93a904edbcb4910b3bac3843df1aa082275ad2a7721de19ef9099537143
MD5 2c8a065eefd0994c9be4686a80a33da9
BLAKE2b-256 56757ed80732ca38e02eee43bead32c4048a8cf72f4a3b46e4027ced1087f289

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bea908c465bf59a313f1388c6ffacfec306ce05b57f170b85f8f4afbd700bb10
MD5 427f4827f49ccebcf7f2ec300f35d1cc
BLAKE2b-256 edd2fd743c4a01c036e98f564c29372dc4147ba663e8381686249d8498e37c33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9f18ac1cca4eed7a6f231a50b151000aa341184d5d5ee68fd8dfa39f9d112d0
MD5 ab76653377caa51c36cdfc2ba1a3aedd
BLAKE2b-256 4884dda179aee41e3c3af6b95677a62d3aa1cd2ce31dddb0a62f95d857013ffb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 839.4 kB
  • 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.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7f5c2aa41b16b875aa18e1d4065953f8e334fbd48adfb9e917de3c6886a3affd
MD5 1c4d4f8c2f4fffe0d360b626ad159a3e
BLAKE2b-256 6762b798c4512a2975b7b5882e1e9fa56b28945ef0ca40272d4177d7f012df94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18f6bc8d0cc861fc51ebc5f5b6bbb6b8864de0fcb850aa10d944e5588cd73d75
MD5 0370e7fade461f0b84444e5e1ff4fe63
BLAKE2b-256 9b91745e256ac6a04a373f8db5d5a8ad98d107cd06eb0f2bfd1208ad540b7394

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a27b928ed3d76018526f3315b102f7dc62e27581b2c08f4ac826baf295ccc26
MD5 f00223033a9da4e44c70de4e9a57e620
BLAKE2b-256 51148dd75153e968688a78e1a53fa3c2c27ed67a9ed5d9dd6092b7c34a7351b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 839.6 kB
  • 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.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fa614d06786c56216c1dcc308ab9ec72146d34ac88070b969837b13371e0aa33
MD5 35294ae0ed968b8c3b970033abeedb1a
BLAKE2b-256 a0b574a8e333e1421e1605352a9b5e40b5c118dfa0282e5618e538ecd791dbfe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64b24a879a19156dd8bdd2350e08a1e58da4fce982390ef9145e1f9fccf92724
MD5 39dfd3a13da4a34b5f9664ab98fcb030
BLAKE2b-256 4cac6686f137048684bee1f11579565555f14908179e2d233a8506ab0812ed15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 108887ace55a27ca4dff35cc2fab0cbc8a3adcde82df71d3805f2ef77dcdcc31
MD5 83087d57f43ac170fdad68d2d1e84320
BLAKE2b-256 e539de781216d1db3c283a6a3dbd1f80145125e1145ad222ae1ba1a0976e9b58

See more details on using hashes here.

File details

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

File metadata

  • Download URL: httpmorph-0.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 841.1 kB
  • 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.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 508d022e1f86fc6eaf957246e10a73497b052581b9e1916002840646eed3f582
MD5 44a335246280710b050b17e5be7d4733
BLAKE2b-256 1ab06714fc6bf8c8452fd8d876b4b9f5d551997ec30c4d1f7009ca155dc58e3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2942190c7f9371c8588fdf445237bb4a375522226096763da965bd0b9a57cb49
MD5 cb376ac6cf69df6c76a507c762064f9e
BLAKE2b-256 aed78aff3321b3f55b229c9626bfece5bb5db3afb6d2457ef1b022dcf76f2148

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for httpmorph-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb64f9e56b87e3a405b886d58c7a49c76b41804b5b177c9f2b81b9f272ab357c
MD5 b2b817d83ce1356ff91d0ae97a5215bf
BLAKE2b-256 7088ef0a9c8d922e3be44abaa843ccae3975382c7a3ae0db70e2376579672f7a

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