Solving FunCaptcha

One of the most popular types of captcha in the format of simple logical or arithmetic tasks. There may also be options for rotating images clockwise or counterclockwise in accordance with the conditions of the task or transcription of voice messages

Start now

FunCaptcha statistics

How to solve FunCaptcha

  1. You need to locate two values on the page with Arkose Labs FunCaptcha

    • Public key

    • Service URL (surl)

    Public key can be found inside data-pkey parameter of funcaptcha's div element or inside an input element with name fc-token - just extract the key indicated after pk from the value of this element.

    Service Url can be also found in fc-token - that is a value of surl parameter.

    Service Url is optional parameter and if you don't provide it we use a default value that is valid for most cases, but we recommend you to provide it.

  2. Submit a HTTP GET or POST request to our API URL: http://2captcha.com/in.php with method set to funcaptcha, provide values found on previous step for publickey and surl parameter and full page URL as value for pageurl. You can find the full list of parameters in the table below.

    Request URL example:

    http://2captcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=funcaptcha&publickey=12AB34CD-56F7-AB8C-9D01-2EF3456789A0&surl=https://client-api.arkoselabs.com&pageurl=http://mysite.com/page/with/funcaptcha/

    PHP

      // https://github.com/2captcha/2captcha-php
    
      require(__DIR__ . '/../src/autoloader.php');
    
      $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
    
      try {
          $result = $solver->funcaptcha([
              'sitekey' => '69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC',
              'url'     => 'https://mysite.com/page/with/funcaptcha',
          ]);
      } catch (\Exception $e) {
          die($e->getMessage());
      }
    
      die('Captcha solved: ' . $result->code);

    Java

      // https://github.com/2captcha/2captcha-java
    
      package examples;
    
      import com.twocaptcha.TwoCaptcha;
      import com.twocaptcha.captcha.FunCaptcha;
    
      public class FunCaptchaExample {
          public static void main(String[] args) {
              TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
              FunCaptcha captcha = new FunCaptcha();
              captcha.setSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
              captcha.setUrl("https://mysite.com/page/with/funcaptcha");
              try {
                  solver.solve(captcha);
                  System.out.println("Captcha solved: " + captcha.getCode());
              } catch (Exception e) {
                  System.out.println("Error occurred: " + e.getMessage());
              }
          }
      }

    C#

      // https://github.com/2captcha/2captcha-csharp
    
      using System;
      using System.Linq;
      using TwoCaptcha.Captcha;
    
      namespace TwoCaptcha.Examples
      {
          public class FunCaptchaExample
          {
              public void Main()
              {
                  TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
                  FunCaptcha captcha = new FunCaptcha();
                  captcha.SetSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
                  captcha.SetUrl("https://mysite.com/page/with/funcaptcha");
                  try
                  {
                      solver.Solve(captcha).Wait();
                      Console.WriteLine("Captcha solved: " + captcha.Code);
                  }
                  catch (AggregateException e)
                  {
                      Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
                  }
              }
          }
      }

    Python

      # https://github.com/2captcha/2captcha-python
    
      import sys
      import os
      sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
    
      from twocaptcha import TwoCaptcha
    
      api_key = 'YOUR_API_KEY'
    
      solver = TwoCaptcha(api_key)
    
      try:
          result = solver.funcaptcha(sitekey='69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC',
                                    url='https://mysite.com/page/with/funcaptcha',
                                    surl='https://client-api.arkoselabs.com')
    
      except Exception as e:
          sys.exit(e)
    
      else:
          sys.exit('result: ' + str(result))

    Go

      // https://github.com/2captcha/2captcha-go
      package main
    
      import (
          "fmt"
          "log"
          "github.com/2captcha/2captcha-go"
      )
    
      func main() {
        client := api2captcha.NewClient("API_KEY")
        cap := api2captcha.FunCaptcha{
          SiteKey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
          Url: "https://mysite.com/page/with/funcaptcha",
          Surl: "https://client-api.arkoselabs.com",
          Data: map[string]string{"anyKey":"anyValue"},   
        }
          code, err := client.Solve(cap.ToRequest())
          if err != nil {
              log.Fatal(err);
          }
          fmt.Println("code "+code)
      }

    C++

      // https://github.com/2captcha/2captcha-cpp
    
      #include <cstdio>
    
      #include "curl_http.hpp"
      #include "api2captcha.hpp"
    
      int main (int ac, char ** av)
      {
      api2captcha::curl_http_t http;
      http.set_verbose (true);
    
      api2captcha::client_t client;
      client.set_http_client (&http);
      client.set_api_key (API_KEY);
    
      api2captcha::funcaptcha_t captcha;
      captcha.set_site_key ("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
      captcha.set_url ("https://mysite.com/page/with/funcaptcha");
      captcha.set_surl ("https://client-api.arkoselabs.com");
    
      try
      {
          client.solve (cap);
          printf ("code '%s'\n", cap.code ().c_str ());
      }
      catch (std::exception & e)
      {
          fprintf (stderr, "Failed: %s\n", e.what ());
      }
    
      return 0;   
      }

  3. If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used. Otherwise server will return an error code.

  4. Make a 10-20 seconds timeout then submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result. The full list of parameters is in the table below.

    If captcha is already solved server will respond in plain text or JSON and return the answer token that looks like:

    3084f4a302b176cd7.96368058|r=ap-southeast-1|guitextcolor=%23FDD531|metabgclr=%23FFFFFF|metaiconclr=%23202122|meta=3|lang=en|pk=12AB34CD-56F7-AB8C-9D01-2EF3456789A0|cdn_url=https://cdn.funcaptcha.com/fc|surl=https://funcaptcha.com
    If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds.

    If something went wrong server will return an error code.

  5. Locate the element with id fc-token and put the token into value of this element.

  6. Do the rest what you need to do on the website: submit a form or click on a button or something else.

GithubFull documentation and code examplesRead more at 2Captcha API

Recognition price

The recognition cost is very low, less than $0.01 for one recaptcha. For convenience, the entire price is indicated for recognizing 1000 recaptchas, but billing in the system occurs separately for each recaptcha. Different types of recaptchas are recognized at different prices.

$2.99

Per 1000 recaptchas

Supported captchas

The process of solving a normal captcha is as follows: we take the captcha image from the page and send it to the 2Captcha service, where an employee solves it typing the indicated text, then the answer is returned to us, which must be entered in the appropriate field to solve the captcha

API demoHow to solve

The process of solving text captcha is as follows: we take the text question of the captcha from the page of its placement and transfer it to the 2Captcha service, where it is solved by the employee, after which the answer is returned to us, which must be entered in the appropriate field to solve the captcha

API demoHow to solve

The solution process is as follows: we take the captcha image from the page of its placement and the instructions on which pictures to click on and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of point coordinates, which we need to click for solving the captcha

API demoHow to solve

The process of solving Rotate Captcha is as follows: we take an image or several images of a captcha from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of the value of the image rotation angle, we need to rotate the image on the angle to solve captcha

API demoHow to solve

The process of solving reCAPTCHA V2 is as follows: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, then the response is returned to us in the form of a token, which must be entered into the appropriate field for the solution captcha

API demoHow to solve

The process of solving reCAPTCHA V2 Callback does not differ from the similar process of solving reCAPTCHA V2: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, then the response is returned to us in as a token, which we should be entered into the appropriate field to solve the captcha. Sometimes you won't find a button submitting a form. A callback function can be used instead. This function is executed when the captcha is recognized. Usually the callback function is defined in the data-callback parameter or as the callback parameter of the grecaptcha.render method call

API demoHow to solve

The process of solving reCAPTCHA V2 Invisible is similar to the recognition of reCAPTCHA V2: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, after which the response is returned to us in the form of a token, which we need enter in the appropriate field to solve the captcha

API demoHow to solve

The process for solving reCAPTCHA V3 is as follows: we take the captcha parameters from the page in the form of the data-sitekey, action and the page URL and transfer it to the 2Captcha service, where it is solved by an employee with the appropriate “humanity” rating, after that the response is returned to us in the form of a token, which must be entered into the appropriate field to solve the captcha. In many ways, the new type of captcha is similar to reCAPTCHA V2, i.e. the basic principle remains the same - the user receives a token from the 2Captcha API, which is sent in a POST request to the site, and the site verifies the token through the 2Captcha API

API demoHow to solve

The process of solving ReCaptcha Enterprise is as follows: we determine the type of reCaptcha, it can be V2 or V3, after which we take the captcha image from the page of its placement in the form of the data-sitekey parameter and transfer it to the 2Captcha service, where it is solved by the employee, after which it is returned to us answer in the form of a token, which must be entered in the appropriate field to solve the captcha

How to solve

The process of solving KeyCaptcha is as follows: we take a set of necessary parameters from the page of its placement and pass it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of other parameters, which must be passed to the appropriate fields to solve the captcha

API demoHow to solve

The process of solving GeeTest Captcha is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

API demoHow to solve

The solution process is as follows: we take the captcha image from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the response is returned to us in the form of a token, which must be entered into the appropriate field to solve the captcha

API demoHow to solve

The process of solving FunCaptcha by Arkose Labs is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

The process of solving Capy Puzzle Captcha is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

How to solve

The TikTok Captcha solution process is based on cookies, which must be used no later than three seconds after our employees solve the captcha. It is necessary to collect all cookies from the page where the captcha is placed, transfer it to the 2Captcha service, where the solution will occur, and apply the set of cookies received in response and then perform a captcha protected action on the page

How to solve