Skip to main content
FunCaptcha (Arkose Labs) is an interactive CAPTCHA system commonly found on gaming, fintech, and e-commerce sites. Surfsky solves the audio challenge presented by the widget — automatically or manually with Surfsky’s cloud browser. It requires an available audio flow; some deployments only present the visual puzzle, in which case there is no audio prompt for the solver to answer.

Before you start

Use the CAPTCHA setup example to start a browser with anti_captcha.enabled: true and create a page-level cdp session. The snippets below use an async Playwright or Puppeteer session after navigating to your target. Each solve is charged. For automatic mode, explicitly include "funcaptcha" in auto_captcha_types; it is not in the default list.
Use quality proxies. Datacenter IPs raise the FunCaptcha challenge frequency the same way they do for other anti-bot systems, and Human Emulation for mouse and keyboard timing further reduces how often the widget appears.

Manual captcha solving

Wait for the challenge to appear, then send:
The timeout is in milliseconds. A solve cut off by timeout is still charged. Raise your CDP client’s own limit for one command to match. With an SDK, start the browser with command_timeout=200 in Python or commandTimeout: 200_000 in TypeScript. After success, wait for a selector or response that identifies the protected content.

Automatic captcha solving

Include "funcaptcha" in anti_captcha.auto_captcha_types at startup. Attach solve event listeners, then start detection before navigating:
status: "started" confirms the background loop started. Observe failures and use a bounded wait for your page result. Keep the CDP session connected until the job completes.

Reducing challenges

  • Solves are charged — see Charges.
  • Quality proxies reduce challenge frequency — datacenter IPs trigger the widget more often.
  • Human Emulation for mouse and keyboard helps avoid triggering the challenge in the first place. See Human Emulation.
  • Be patient — Arkose Labs frequently chains multiple audio rounds before releasing the page; 1-2 minutes to complete is normal, not a stuck job.

Verify bypass worked

A success status from Captcha.solve means the challenge was passed — it does not confirm the site’s own risk check accepted it. Check that the protected content actually loaded before treating the job as done. Inspect the widget when audio controls or challenge frames cannot be found. The solver answers the audio challenge only, not the visual puzzle, and a site can change the audio flow independently of your code. Check solver configuration, inspect one attempt in DevTools, and record the result or error before retrying. Stop the browser when the job ends.

FunCaptcha bypass FAQ

No. Surfsky’s FunCaptcha solver targets the audio challenge specifically. If a target only presents the visual rotation or image-selection puzzle, there is no audio prompt for it to answer — this limitation applies to audio-based FunCaptcha solvers generally, not just Surfsky.
No. Each solve is charged instead.
It’s opt-in: add "funcaptcha" to the list yourself when you’re ready to use it. Each automatic solve is charged.
A success status means the audio prompt was answered, not that the site accepted it. Confirm the protected content actually loaded, and check whether the exit IP changed mid-session before assuming the solver failed.
Arkose Labs frequently chains multiple audio rounds before releasing the page. 1-2 minutes is normal for FunCaptcha specifically — set your timeout accordingly rather than treating it as a stuck job.
Questions? Contact support.