Solve Friendly Captcha
capskip_solve_friendly_captchaSolve Friendly Captcha proof-of-work challenges by sending the sitekey and page URL. Specify the protocol version or module script to ensure the site accepts the token.
Instructions
Solve a Friendly Captcha proof-of-work challenge. Nothing is shown on screen — the widget does arithmetic instead of asking the visitor to do anything. IMPORTANT: two entirely different protocols ship under this one name, sharing a brand and a sitekey namespace and nothing else, and a sitekey does not tell you which a site uses. Send version (v1 or v2), or send module_script and let CapSkip read the version off the build the site loads. Solving the wrong one returns a well-formed token the site rejects, with nothing to indicate the version was the problem. The form field also differs by version: v1 uses 'frc-captcha-solution', v2 uses 'frc-captcha-response'. Solve time is not a constant — the service sets the difficulty per request — so budget for that rather than assuming a fixed duration.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the page the captcha appears on, including scheme. | |
| proxy | No | Solve from this network. Worth setting sooner here than almost anywhere else: the service raises the difficulty for addresses it has already seen a lot of. | |
| sitekey | Yes | The data-sitekey attribute of the widget element — the one carrying class='frc-captcha'. | |
| timeout | No | Seconds to wait before giving up. Maximum 600. | |
| version | No | The protocol version the site uses. Two entirely different protocols ship under this one name and a sitekey does not say which, so send this or module_script. Defaults to v1 when neither is given. | |
| api_server | No | The data-residency tenant the sitekey belongs to: 'global' (the default), 'eu', or a full URL. Both tenants mint a token for the same sitekey, so the wrong one is only caught by the site's own check. | |
| module_script | No | The src of the widget script tag carrying type='module'. The most reliable version signal there is, because it is the build the site actually loads: 'widget.module.min.js' means v1, 'site.min.js' v2. | |
| nomodule_script | No | The src of the widget script tag carrying 'nomodule'. Read for the same reason. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| token | Yes | ||
| captchaId | Yes | ||
| solveSeconds | Yes |