Before you start
Use the CAPTCHA setup example to start a browser withanti_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.
Configure a Gemini key on the account or pass it as anti_captcha.gemini_api_key. 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: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
- Gemini API Key Required — the audio solver needs AI analysis; there is no keyless path for FunCaptcha.
- 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
Asuccess status from Captcha.solve confirms the audio prompt was answered and submitted — 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 does not support every visual challenge variant, 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
Will the solver work if the site only shows the visual puzzle?
Will the solver work if the site only shows the visual puzzle?
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.
Do I need a Gemini API key for every solve?
Do I need a Gemini API key for every solve?
Yes. Unlike DataDome’s slider option, FunCaptcha’s audio solver has no keyless path —
anti_captcha.gemini_api_key is required for the AI analysis step every time.Why isn't FunCaptcha in auto_captcha_types by default?
Why isn't FunCaptcha in auto_captcha_types by default?
It carries a hard Gemini key dependency that other supported CAPTCHA types don’t, so it’s opt-in — add
"funcaptcha" to the list yourself when you’re ready to use it.A solve reports success but the page still shows the challenge — why?
A solve reports success but the page still shows the challenge — why?
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.Why is a single solve taking over a minute?
Why is a single solve taking over a minute?
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.