Skip to content

v1.2.0 — Python and Node ports, published to PyPI and npm

Latest

Choose a tag to compare

@buggerlogger buggerlogger released this 04 Sep 18:54
· 5 commits to master since this release

Available in three languages now, all at the same version.

go get github.com/buggerlogger/arkose-solver/arkose   # Go 1.25+
pip install arkose-solver                             # Python 3.10+
npm install arkose-solver node-tls-client             # Node 18+

Python and Node ports

Both mirror the Go derivation and BDA layers — including the automatic RSA key
recovery from api.js, so there is nothing to capture or pin in any language —
and both reach sup=1 against a live deployment.

They are kept honest by ports/testvectors.json, which the Go implementation
generates and asserts against captured ground truth before writing. Each port
replays every vector and then checks 20 freshly generated payloads for internal
consistency: f, ife_hash, webgl_hash_webgl, network_info_rtt_type and
screen_pixel_depth are recomputed from the payload itself rather than compared
to a constant, so a port that hard-coded a value would pass the vectors and fail
here. 162 checks pass in Python, 163 in Node.

Transport cannot be pure in either language because Arkose reads the TLS
fingerprint (JA3/JA4), so Python uses curl_cffi and Node uses
node-tls-client. Go remains the reference implementation.

Go

MD5 and ChromeWindowsF58835f are now exported, and Voice carries JSON tags
so its fields round-trip in lowercase. Additive — no breaking changes.

Packaging

The Python floor moved to 3.10 with curl_cffi>=0.7. The previous >=3.8 was
wrong in a way that installs and then misbehaves: current curl_cffi requires
3.10, so pip on 3.8/3.9 would silently resolve a years-old release rather than
fail.