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.
pip install arkose-solverRequires Python 3.10+. Part of arkose-solver, which is also available for Go and Node.
from arkose_solver import Solver
s = Solver(
surl="https://verify.example.com",
public_key="00000000-0000-0000-0000-000000000000",
site="https://www.example.com",
proxy="http://user:pass@host:port", # optional
)
res = s.solve()
print(res.token, res.suppressed)solve() returns SolveResult(token, suppressed, timings). suppressed is
True when the token carries sup=1.
Solver(surl, public_key, site=None, rsa_public_key=None, proxy=None, user_agent=None, language="en-US", capi_mode="lightbox", title="", referer=None, origin=None, sitedata_location_href=None, document_referrer=None, data_exchange_url=None, data_exchange_regex=None)
rsa_public_key is only an override; leave it unset and it is extracted from
api.js automatically.
python tests/conformance.pyChecks 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.
Uses curl_cffi with Chrome impersonation. Arkose reads the TLS fingerprint
(JA3/JA4), so requests/httpx will not do regardless of how correct the
payload is.