Releases: apify/impit
impit-node@0.13.0
Features
- Add new OkHTTP fingerprints (#416)
- Adds profiles for emulating the fingerprints of the OkHTTP library (JVM / Android HTTP client).
impit-node@0.12.0
Features
-
Add per-request
redirectoption toRequestInit(#418)- Adds standard Fetch API
redirectoption toRequestInit, allowing per-request override of the instance-levelfollowRedirectssetting.
- Adds standard Fetch API
-
Add
clone()support toImpitResponse(#419)- Implements
Response.clone()onImpitResponseusingReadableStream.tee(), making impit compatible with libraries like ky that callresponse.clone()internally.
- Implements
js-0.11.0
impit-python@0.12.0
Features
-
Add HTTP/2 SETTINGS fingerprinting (#386)
- Adds custom HTTP2 profiles to the emulated browser fingerprints.
-
Support
timeout=Noneto disable timeout (#402)- Updates the timeout handling in Python. The default behaviour stays the same, but passing timeout=None now disables the timeout (either client-wide or for the current request). This aligns impit with how httpx handles timeouts.
Refactor
- Replace scraper with lol_html for HTML charset prescanning (#398)
- Replaces
scraperdependency with a more lightweight HTML parser fromlol_html. Adds regression tests to ensure the behaviour stays the same.
- Replaces
impit-node@0.10.1
Bug Fixes
- Keep
content-lengthheader in compressed responses (#395)
impit-node@0.10.0
impit-python@0.11.0
Bug Fixes
-
Proxy authenticates with empty password (#327)
-
Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Use the
rustlsVerifier/CryptoProvidercache with custom fingerprints (#371)- Speeds up repeated client instantiation and lowers the memory footprint if the custom fingerprints are used. Related to #370
-
Allow removing impersonated headers by passing empty string (#382)
- Users can now remove impersonated headers (like
Sec-Fetch-User) from requests by passing an empty string as the header value. When an empty string is provided, the header is filtered out before the request is sent. This enables users, e.g., to manually control whichSec-Fetch-*headers should be included in their requests, addressing use cases where the default impersonated headers don't match the actual request context.
- Users can now remove impersonated headers (like
Features
-
Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
-
Use rustls-platform-verifier for system CA support (#357)
- Replaces the static
webpki-rootsdependency withrustls-platform-verifierto enableimpitto rely on the operating system's trust store. ---------
- Replaces the static
-
Custom fingerprint support (#366)
- Extracts all fingerprinting logic (from e.g. the
rustlspatch) toimpit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
- Extracts all fingerprinting logic (from e.g. the
-
Add more Chrome and Firefox fingerprints (#367)
- Adds more browser fingerprints and passes these to the Node.JS and Python bindings.
impit-node@0.9.2
Bug Fixes
- Allow removing impersonated headers by passing empty string (#382)
- Users can now remove impersonated headers (like
Sec-Fetch-User) from requests by passing an empty string as the header value. When an empty string is provided, the header is filtered out before the request is sent. This enables users, e.g., to manually control whichSec-Fetch-*headers should be included in their requests, addressing use cases where the default impersonated headers don't match the actual request context.
- Users can now remove impersonated headers (like
impit-node@0.9.1
Bug Fixes
- Handle redirects/cookies in the JS layer (#375)
- Solves high-concurrency segmentation faults, processes cookies and handles redirects fully in JS instead of Rust.
impit-node@0.9.0
Changelog
All notable changes to this project will be documented in this file.
js-0.9.0 - 2026-01-29
Bug Fixes
-
Prevent double free on
Bufferby passing aBufferSlice(#369)- As a non-async function,
decode_bufferdoesn't require owning theBufferand can do with only aBufferSlice. This takes the cleanup responsibility fromnapi-rsand should prevent the double free scenarios, as theBufferis now Node runtime-managed.
- As a non-async function,
-
Use the
rustlsVerifier/CryptoProvidercache with custom fingerprints (#371)- Speeds up repeated client instantiation and lowers the memory footprint if the custom fingerprints are used. Related to #370
-
Call
adjust_external_memoryonImpitinstantiation (#372)- Large wrapped objects should
adjust_external_memoryto guide the native GC scheduler (docs). The size of 500kB is eyeballed (experiments show values around ~120kB), so this should give us enough leeway for the future.
- Large wrapped objects should
Features
-
Use rustls-platform-verifier for system CA support (#357)
- Replaces the static
webpki-rootsdependency withrustls-platform-verifierto enableimpitto rely on the operating system's trust store. ---------
- Replaces the static
-
Custom fingerprint support (#366)
- Extracts all fingerprinting logic (from e.g. the
rustlspatch) toimpit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
- Extracts all fingerprinting logic (from e.g. the
-
Add more Chrome and Firefox fingerprints (#367)
- Adds more browser fingerprints and passes these to the Node.JS and Python bindings.