Home Documentation Tutorials Sign In
Documentation menu

Solve Arkose Labs captcha (aka Funcaptcha) automatically without proxy - FuncaptchaTaskProxyless

This type of task solves Arkose Labs captcha (or Funcaptcha) without proxy. Task will be executed using our own proxy servers and/or workers' IP addresses.

Arkose Labs API provides information to the website owner about the solver's IP address. However it's worth trying first to bypass captcha without proxy, and if it doesn't work - switch to FuncaptchaTask with proxy.


Task object

Property Type Required Purpose
type String Yes FunCaptchaTaskProxyless
websiteURL String Yes Address of a target web page. Can be located anywhere on the web site, even in a member area. Our workers don't navigate there but simulate the visit instead.
websitePublicKey String Yes Arkose Labs public key
funcaptchaApiJSSubdomain String No Custom Arkose Labs subdomain from which the Javascript widget is loaded. Required for some cases, but most Arkose Labs integrations run without it.
data String No An additional parameter that may be required by Arkose Labs implementation. Use this property to send "blob" value as an object converted to a string. See an example of what it might look like.

Request example

          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
            "data": "{\"blob\":\"dyXvXANMbHj1iDyz.Qj97JtSqR2n%2BuoY1V%2FbdgbrG7p%2FmKiqdU9AwJ6MifEt0np4vfYn6TTJDJEfZDlcz9Q1XMn9przeOV%2FCr2%2FIpi%2FC1s%3D\"}",
    "softId": 0
}' https://api.anti-captcha.com/createTask

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git


$api = new FunCaptchaProxyless();

//your anti-captcha.com account key

//target website address

//recaptcha key from target website

//optional Arkose Labs API subdomain, see our documentation for details

//optional data[blob] value, read the docs

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter

//create task in API
if (!$api->createTask()) {
    $api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
    return false;

$taskId = $api->getTaskId();

//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
    echo "could not solve captcha\n";
    echo $api->getErrorMessage()."\n";
} else {

    $gResponse    =   $api->getTaskSolution();
    echo "your arkose labs token: $gResponse\n\n";

          #pip3 install anticaptchaofficial

from anticaptchaofficial.funcaptchaproxyless import *

solver = funcaptchaProxyless()

# optional funcaptcha API subdomain, see our Funcaptcha documentation for details
# solver.set_js_api_domain("custom-api-subdomain.arkoselabs.com")

# optional data[blob] value, read the docs
# solver.set_data_blob("{\"blob\":\"DATA_BLOB_VALUE_HERE\"}")

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter

token = solver.solve_and_return_solution()
if token != 0:
    print "result token: "+token
    print "task finished with error "+solver.error_code
          //npm -i @antiadmin/anticaptchaofficial

const ac = require("@antiadmin/anticaptchaofficial");


//optional, but often required:
ac.settings.funcaptchaApiJSSubdomain = 'custom-api.arkoselabs.com';
ac.settings.funcaptchaDataBlob = 'DATA[BLOB]_HERE';

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter

//solve and receive token
ac.solveFunCaptchaProxyless('http://DOMAIN.COM', 'WEBSITE_KEY')
    .then(token => {
        console.log('result: '+token);
    .catch(error => console.log('test received error '+error));
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git

package com.anti_captcha;

import com.anti_captcha.Api.FunCaptchaProxyless;
import com.anti_captcha.Helper.DebugHelper;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {


        FunCaptchaProxyless api = new FunCaptchaProxyless();
        api.setWebsiteUrl(new URL("http://mywebsite.com/funcaptcha/"));

        //optional parameters, read the docs, be careful!

        //Specify softId to earn 10% commission with your app.
        //Get your softId here: https://anti-captcha.com/clients/tools/devcenter

        if (!api.createTask()) {
                    "API v2 send failed. " + api.getErrorMessage(),
        } else if (!api.waitForResult()) {
            DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
        } else {
            DebugHelper.out("Result token: " + api.getTaskSolution().getToken(), DebugHelper.Type.SUCCESS);




Response example

JSON with no errors
    "errorId": 0,
    "taskId": 7654321
JSON with an error
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"

Retrieve the solution

Use method getTaskResult to request the solution. Give the worker about 5 seconds before making your first request. If the worker is still busy, retry in 3 seconds.

Task solution object

Property Type Purpose
token String Token string required for interacting with the submit form on the target website.

Response example

JSON with no errors