Skip to content

v0.2.8

Latest

Choose a tag to compare

@arman-bd arman-bd released this 10 Dec 20:12
608decb

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 Client and Session now default to http2=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-ua with correct Chrome version branding
  • sec-ch-ua-mobile, sec-ch-ua-platform
  • sec-fetch-site, sec-fetch-mode, sec-fetch-user, sec-fetch-dest
  • priority: 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_size wasn'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 h2 protocol (not http/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