Распознавание FunCaptcha

Один из популярных видов капчи в формате простых логических или арифметических задач. Также могут встречаться варианты с поворотом изображений по часовой или против часовой стрелки в соответствии с условиями задачи или транскрибация голосовых сообщений

Начать сейчас

Статистика FunCaptcha

Как распознать FunCaptcha

  1. Вам нужно найти два значения на странице с размещенной Arkose Labs FunCaptcha.

    • Открытый ключ

    • Service URL (surl)

    Открытый ключ можно найти внутри параметра data-pkey элемента div funcaptcha или внутри элемента ввода с именем fc-token - просто извлеките ключ, указанный после pk, из значения этого элемента.

    URL-адрес службы также можно найти в fc-token - это значение параметра surl.

    URL-адрес службы является необязательным параметром, и если вы его не предоставите, мы будем использовать значение по умолчанию, которое действует в большинстве случаев, но мы рекомендуем вам указать его.

  2. Отправьте HTTP-запрос GET или POST на наш URL-адрес API: http://2captcha.com/in.php с методом, установленным на funcaptcha, укажите значения, найденные на предыдущем шаге для параметра publickey и surl, и полный URL-адрес страницы в качестве значения для pageurl. Вы можете найти полный список параметров в таблице ниже.

    Пример URL-адреса запроса:

    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. Если все в порядке, сервер вернет идентификатор вашей капчи в виде обычного текста, например: OK | 2122988149 или в виде JSON {"status": 1, "request": "2122988149"}, если использовался параметр json.
    В противном случае сервер вернет код ошибки.

  4. Сделайте 10-20 секундный тайм-аут, затем отправьте HTTP-запрос GET на наш URL-адрес API: http://2captcha.com/res.php, чтобы получить результат. Полный список параметров находится в таблице ниже.

    Если капча уже решена, сервер ответит в виде обычного текста или JSON и вернет токен ответа, который выглядит так:

    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
    Если капча еще не решена, сервер вернет результат CAPCHA_NOT_READY. Повторите свой запрос через 5 секунд.

    Если что-то пошло не так, сервер вернет код ошибки.

  5. Найдите элемент с идентификатором fc-token и поместите токен в значение этого элемента.

  6. В конце сделайте то, что вам нужно сделать на целевом веб-сайте: отправьте форму, нажмите кнопку или что-нибудь еще.

GithubПолная документация и код примеровПодробнее на ruCaptcha API

Стоимость решения

Стоимость распознавания очень низка, от RUB 0.16 за одну рекапчу. Для удобства, все цены указывается за распознавание 1000 рекапч, но биллинг в системе происходит отдельно по каждой рекапче. Разные типы рекапч распознаются по разной цене.

RUB 160.00

За 1000 рекапч

Поддерживаемые капчи

Процесс решения обычной капчи заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи

API демонстрацияКак решить

Процесс решения текстовой капчи заключается в следующем: мы забираем текстовый вопрос капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи

API демонстрацияКак решить

Процесс решения заключается в следующем: мы забираем изображение капчи со страницы ее размещения и инструкцию, по каким картинкам необходимо кликать и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора координат точек на изображении, по которым необходимо кликнуть для решения капчи

API демонстрацияКак решить

Процесс решения Rotate Captcha заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде значения угла поворота изображения, на который необходимо повернуть изображение для решения капчи

API демонстрацияКак решить

Процесс решения reCAPTCHA V2 заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

API демонстрацияКак решить

Процесс решения reCAPTCHA V2 Callback не отличается от аналогичного процесса решения ReCaptcha V2: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Иногда вы не найдете кнопки, отправляющей форму. Вместо нее может использоваться callback-функция. Эта функция выполняется, когда капча распознана. Обычно callback-функция определена в параметре data-callback или как параметр callback у функции grecaptcha.render

API демонстрацияКак решить

Процесс решения невидимой капчи reCAPTCHA V2 Invisible аналогичен распознаванию reCAPTCHA V2 и заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

API демонстрацияКак решить

Процесс решения ReCaptcha Enterprise заключается в следующем: определяем тип reCaptcha, он может быть V2 или V3, после чего мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

Как решить

Процесс решения reCAPTCHA V3 следующий: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey, параметра action и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник с соответствующим рейтингом “человечности”, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Во многом новый вид капчи похож на reCAPTCHA V2, т.е. основной принцип остался тем же - пользователь получает от API ruCaptcha токен, который отправляется в POST-запросе к сайту, а сайт верифицирует токен через API reCAPTCHA

API демонстрацияКак решить

Процесс решения KeyCaptcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

API демонстрацияКак решить

Процесс решения GeeTest Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

API демонстрацияКак решить

Процесс решения заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи ruCaptcha и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

API демонстрацияКак решить

Процесс решения FunCaptcha Arkose Labs заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Процесс решения Capy Puzzle Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Как решить

Процесс решения TikTok Captcha основан на cookies, которые нужно использовать не позднее трех секунд после решения капчи нашими работниками. Необходимо собрать все cookies со страницы, где размещена капча, передать в сервис ruCaptcha, где произойдет решение, а полученный в ответ набор cookies применить перед совершением действия, защищенного капчей на странице размещения капчи

Как решить