Skip to content

Releases: apify/impit

impit-node@0.13.0

26 Mar 17:55

Choose a tag to compare

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

24 Mar 17:41

Choose a tag to compare

Features

  • Add per-request redirect option to RequestInit (#418)

    • Adds standard Fetch API redirect option to RequestInit, allowing per-request override of the instance-level followRedirects setting.
  • Add clone() support to ImpitResponse (#419)

    • Implements Response.clone() on ImpitResponse using ReadableStream.tee(), making impit compatible with libraries like ky that call response.clone() internally.

js-0.11.0

13 Mar 14:53
a4b9753

Choose a tag to compare

What's Changed

  • feat: better errors for Node.JS bindings by @barjin in #406

Full Changelog: js-0.10.1...js-0.11.0

impit-python@0.12.0

06 Mar 13:40

Choose a tag to compare

Features

  • Add HTTP/2 SETTINGS fingerprinting (#386)

    • Adds custom HTTP2 profiles to the emulated browser fingerprints.
  • Support timeout=None to 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 scraper dependency with a more lightweight HTML parser from lol_html. Adds regression tests to ensure the behaviour stays the same.

impit-node@0.10.1

02 Mar 16:09

Choose a tag to compare

Bug Fixes

  • Keep content-length header in compressed responses (#395)

impit-node@0.10.0

02 Mar 13:13

Choose a tag to compare

Bug Fixes

  • Clean up AbortSignal listeners after fetch() completes (#394)
    • Drops AbortSignal listeners in Node.JS bindings to prevent memory leaks on AbortSignal reuse.

Features

  • Add HTTP/2 SETTINGS fingerprinting (#386)
    • Adds custom HTTP2 profiles to the emulated browser fingerprints.

impit-python@0.11.0

11 Feb 10:08

Choose a tag to compare

Bug Fixes

  • Proxy authenticates with empty password (#327)

  • Authenticate with HTTPS proxy and HTTP target (#333)

    • Propagates upstream fixes from reqwest.
  • Do not panic on missing attributes for encoding-related meta elements (#346)

    • Ignores encoding-related meta elements with missing content or charset attributes. Related to #344
  • Use the rustls Verifier / CryptoProvider cache 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 which Sec-Fetch-* headers should be included in their requests, addressing use cases where the default impersonated headers don't match the actual request context.

Features

  • Enable TRACE method in the bindings (#328)

    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
  • Use rustls-platform-verifier for system CA support (#357)

    • Replaces the static webpki-roots dependency with rustls-platform-verifier to enable impit to rely on the operating system's trust store. ---------
  • Custom fingerprint support (#366)

    • Extracts all fingerprinting logic (from e.g. the rustls patch) to impit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
  • 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

10 Feb 10:31

Choose a tag to compare

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 which Sec-Fetch-* headers should be included in their requests, addressing use cases where the default impersonated headers don't match the actual request context.

impit-node@0.9.1

02 Feb 13:29

Choose a tag to compare

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

29 Jan 15:50

Choose a tag to compare

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 Buffer by passing a BufferSlice (#369)

    • As a non-async function, decode_buffer doesn't require owning the Buffer and can do with only a BufferSlice. This takes the cleanup responsibility from napi-rs and should prevent the double free scenarios, as the Buffer is now Node runtime-managed.
  • Use the rustls Verifier / CryptoProvider cache 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_memory on Impit instantiation (#372)

    • Large wrapped objects should adjust_external_memory to 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.

Features

  • Use rustls-platform-verifier for system CA support (#357)

    • Replaces the static webpki-roots dependency with rustls-platform-verifier to enable impit to rely on the operating system's trust store. ---------
  • Custom fingerprint support (#366)

    • Extracts all fingerprinting logic (from e.g. the rustls patch) to impit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
  • Add more Chrome and Firefox fingerprints (#367)

    • Adds more browser fingerprints and passes these to the Node.JS and Python bindings.