Releases: apify/impit
impit-node@0.7.6
Changelog
All notable changes to this project will be documented in this file.
js-0.7.6 - 2026-01-05
Bug Fixes
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Throw
Erroron invalid header value (do not panic) (#347)- Unparseable response header values now only return
Errorin the Node bindings instead of panicking and killing the process. Related to #344
- Unparseable response header values now only return
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
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
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error: ``` import { Impit } from "impit"; ^^^^^ SyntaxError: Named export 'Impit' not found. The requested module 'impit' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example us...
- Lists the "named" exports from the
impit-node@0.7.5
Changelog
All notable changes to this project will be documented in this file.
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
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
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error:import { Impit } from "impit"; ^^^^^ SyntaxError: Named export 'Impit' not found. The requested module 'impit' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example using: import pkg from 'impit'; const { Impit } = pkg;
- Lists the "named" exports from the
js-0.2.4 - 2025-02-25
Bug Fixes
- Allow
impitusage from ESM (#74)- Renames native code import to mitigate naming collision with global
exports.
- Renames native code import to mitigate naming collision with global
js-0.2.3 - 2025-02-21
Bug Fixes
- Reenable HTTP/3 features in JS bindings (#57)
- Recent package updates might have broken the
http3feature in Node.JS bindings. This PR solves the underlying problems by bui...
- Recent package updates might have broken the
impit-node@0.7.4
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
impit-node@0.7.3
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
impit-node@0.7.2
Bug Fixes
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
impit-python@0.9.3
Changelog
All notable changes to this project will be documented in this file.
py-0.9.2 - 2025-11-13
Bug Fixes
- Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
py-0.9.1 - 2025-11-13
Bug Fixes
- Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
py-0.9.0 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
py-0.8.0 - 2025-10-22
Features
- Add support for Python 3.14, drop support for Python 3.9 and PyPy (#289)
py-0.7.3 - 2025-10-17
Bug Fixes
- Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
- Add
json()method forResponseobject (#277)- Adds a
Response.json()method that parsesResponse.textusing the nativejsonmodule.
- Adds a
py-0.6.1 - 2025-09-03
Features
- Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
py-0.6.0 - 2025-09-02
Bug Fixes
- Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Features
- Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
py-0.5.4 - 2025-08-26
Features
- Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
py-0.5.3 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
py-0.5.2 - 2025-08-11
Bug Fixes
- Resolve blocking behavior in synchronous
Clientwhile reading response (#234)-
- Resolve blocking behavior for read stream
Responseforimpit.Client
- Resolve blocking behavior for read stream
-
Features
- Add constructor for
Response(#233)-
- Add constructor for
Response. This can be useful when creating tests and mocks. - Allow to set custom attributes inResponse---------
- Add constructor for
-
py-0.5.1 - 2025-08-05
Bug Fixes
- Resolve blocking behavior in
impit.Clientduring multithreaded operations (#230)
py-0.5.0 - 2025-07-30
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
py-0.4.1 - 2025-07-22
Bug Fixes
-
Exception class types are inheriting from
Exception(#207) -
Fix cookies with attributes 'SameSite' and
domain(#213)
Refactor
- Improve thread safety, make
ImpitSync(#212)
py-0.4.0 - 2025-07-07
Bug Fixes
- Fix the data types for
restandversionwith which theCookieobject is created. (#202)- Fix the data types with which a
Cookieobject is created, such asrestandversion.
- Fix the data types with which a
Features
- Add
(Async)Client.stream()method for Python (#201)- Adds
streamsupport forClientandAsyncClient. Implements forResponsesupport for thereadanditer_bytesmethods, and their counterpartsareadandaiter_bytesaccording to thehttpxAPI closes #142
- Adds
py-0.3.0 - 2025-06-25
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
-
Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
-
Support for custom cookie stores for Python (#182)
- Adds
cookie_jarconstructor parameter forClientandAsyncClientclasses, acceptinghttp.cookiejar'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: http.cookiejar.Cookie)anditer(): Cookie[]. impit will write to and read from this custom cookie store. Related to #123
- Adds
-
Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
py-0.2.3 - 2025-05-09
Features
- Add context manager interface for
ClientandAsyncClient(#176)- Enables using
AsyncClientandClientconstructors as context managers inside thewith statements. Closes #174
- Enables using
py-0.2.2 - 2025-05-07
Bug Fixes
-
Reenable HTTP/3 features in JS bindings (#57)
- Recent package updates might have broken the
http3feature in Node.JS bindings. This PR solves the underlying problems by building the reqwest'sClientfrom within thenapi-rs-managedtokioruntime. Adds tests forhttp3usage from Node bindings. Removes problematic Firefox header (Connectionis not allowed in HTTP2 and HTTP3 requests or responses and together withforceHttp3was causing panics inside the Rust code).
- Recent package updates might have broken the
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
-
Add
ReadableStreaminResponse.body(#28)- Accessing
Response.bodynow returns an instance of JSReadableStream. This API design matches the (browser) Fetch API spec. In order to correctly manage theResponseconsumption, the current codebase has been slightly refactored. Note that the implementation relies on a prerelease version of thenapi-rstooling.
- Accessing
-
Add Python bindings for
impit(#49)- Adds Python bindings for
impit. The interface is inspired by thehttpxlibrary (in the same way the JS bindings' interface is inspired byfetch, i.e. the end goal is to provide an almost drop-in replacement with extra features).
- Adds Python bindings for
-
Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
-
Allow passing binary body to the
dataparameter (#103)- Following the discussion under #97 , this PR widens the type accepted by the
dataparameter.datanow accepts both adict[str,str]and a binary representation of the request body. This PR intentionally doesn't update the recently added typings in theimpit.pyifile, as this behaviour (accepting the binary body) is considered deprecated in thehttpxlibrary we use as the design master.
- Following the discussion under #97 , this PR widens the type accepted by the
-
Make
ImpitPyResponsepublic for Python with the nameResponse(#110)-
- Make
ImpitPyResponsepublic for Python with the nameResponse. This will improve type handling and code navigation in the IDE ---------
- Make
-
-
Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
-
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
0.1.5 - 2025-01-23
Bug Fixes
- Use replacement character on invalid decode (#25)
- When decoding incorrectly encoded content, the binding now panics and takes down the entire JS script. This change replaces the incorrect sequence with the U+FFFD replacement character (οΏ½) in the content. This is most often the de...
impit-python@0.9.2
Bug Fixes
- Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
impit-python@0.9.1
Bug Fixes
- Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
impit-python@0.9.0
Bug Fixes
- Align anonymous client API with httpx (#310)
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
impit-node@0.7.1
This is an empty release.
It does not contain any actual changes from 0.7.0.