httpmorph v0.2.8 Release Notes
Highlights
This release focuses on perfect Chrome 143 fingerprint matching and includes critical bug fixes for Windows stability.
New Features
Perfect Chrome 143 TLS Fingerprint Matching
- JA4:
t13d1516h2_8daaf6152771_d8a2da3f94cd(exact match) - JA4_r: Full cipher suite and extension match
- Peetprint hash:
1d4ffe9b0e34acac0bd883fa7f79d7b5(exact match) - Akamai HTTP/2:
1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p(exact match)
Chrome 127-143 Browser Profiles
- Added support for multiple Chrome versions (127-143)
- Chrome 143 is now the default profile
- Each profile includes version-specific User-Agent strings
HTTP/2 by Default
- Both
ClientandSessionnow default tohttp2=True - Matches Chrome's default behavior for realistic fingerprinting
- Per-request override available with
http2=False
Chrome-like Default Headers
Sessions now automatically include Chrome-like headers:
sec-ch-uawith correct Chrome version brandingsec-ch-ua-mobile,sec-ch-ua-platformsec-fetch-site,sec-fetch-mode,sec-fetch-user,sec-fetch-destpriority: u=0, i
Bug Fixes
Critical: Windows Heap Corruption Fix
Fixed heap corruption (0xc0000374) that caused crashes on Windows during Session cleanup. The issue was in HTTP/2 response body buffer management where:
- Buffer pool references weren't cleared when replacing buffers
- Original pool buffers weren't returned before replacement
_body_actual_sizewasn't updated for new allocations
TLS Fingerprint Accuracy Fixes
- Certificate compression: Now advertises only Brotli (matching Chrome), with zlib decompression still supported for server compatibility
- Application settings (ALPS): Only advertises
h2protocol (nothttp/1.1) - Extension permutation: Enabled to randomize extension order like Chrome
Build Fixes
- Fixed brotli library linking on all platforms
- Build brotli from source on macOS for correct deployment target
- Added brotli dependencies to CI for Linux, macOS, and Windows
Breaking Changes
None - this is a backwards-compatible release.
Upgrade Notes
# HTTP/2 is now enabled by default session = httpmorph.Session(browser='chrome') response = session.get('https://example.com') print(response.http_version) # '2.0'To use HTTP/1.1, explicitly disable HTTP/2
session = httpmorph.Session(browser='chrome', http2=False)
Fingerprint Comparison
| Fingerprint | Chrome 143 | httpmorph 0.2.8 | Status |
|---|---|---|---|
| JA4 | t13d1516h2_8daaf6152771_d8a2da3f94cd | t13d1516h2_8daaf6152771_d8a2da3f94cd | ✅ Match |
| Peetprint | 1d4ffe9b0e34acac0bd883fa7f79d7b5 | 1d4ffe9b0e34acac0bd883fa7f79d7b5 | ✅ Match |
| Akamai H2 | 52d84b11737d980aef856699f885ca86 | 52d84b11737d980aef856699f885ca86 | ✅ Match |