Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

arkose-solver (Node)

npm node

Arkose Labs / FunCaptcha solver producing sup=1 suppressed tokens. The site's RSA public key is derived from the served api.js on every solve, so there is nothing to capture or pin.

npm install arkose-solver node-tls-client

Requires Node 18+. Part of arkose-solver, which is also available for Go and Python.

const { Solver } = require('arkose-solver');

(async () => {
  const s = new Solver({
    surl: 'https://verify.example.com',
    publicKey: '00000000-0000-0000-0000-000000000000',
    site: 'https://www.example.com',
    proxy: 'http://user:pass@host:port', // optional
  });
  const res = await s.solve();
  console.log(res.token, res.suppressed);
  await s.close();
  await Solver.shutdown(); // tears down the native TLS client
})();

solve() resolves to { token, suppressed, timings }. suppressed is true when the token carries sup=1.

Conformance

npm test

Checks every derivation against ../testvectors.json (generated by the Go implementation, which asserts each value against captured ground truth) and then verifies 20 freshly generated payloads are internally self-consistent — f, ife_hash, webgl_hash_webgl, network_info_rtt_type and screen_pixel_depth all recomputed from the payload itself.

Transport

Uses node-tls-client for the Chrome TLS fingerprint. Arkose reads JA3/JA4, so fetch/axios will not do regardless of how correct the payload is. It is an optional dependency: the derivation and BDA layers work without it, only solve() needs it.

Solver.shutdown() releases the shared native client; call it once when your process is done solving.