Looking for international version of our service? Go to 2captcha.com

FunCaptcha Grid (Image Click)

FunCaptcha Grid widget

Этот тип FunCaptcha требует выбрать ячейки сетки, которые соответствуют заданной инструкции (например, «Выберите все изображения со стрелками, указывающими вправо»).

Хотя FunCaptcha с выбором изображений также имеет отдельный API-метод на основе токенов, в некоторых случаях её можно решить через универсальный Grid-метод.

Изображение капчи логически делится на равные части (ячейки сетки), а результат решения возвращается в виде списка номеров ячеек, по которым нужно кликнуть.

Возвращает массив индексов выбранных плиток, где 0 соответствует верхнему левому углу сетки.

  • Поддерживаемые форматы изображений: JPEG, PNG, GIF
  • Максимальный размер файла: 600 kB
  • Максимальный размер изображения: 1000px по любой стороне

Спецификация для типа задачи GridTask (FunCaptcha)

Свойство Тип Обязателен Описание
type Строка Да Тип задачи: GridTask
body Строка Да Изображение закодировано в формат Base64. Также поддерживается формат Data-URI (с префиксом data:content/type)
rows Число Нет Количество строк в сетке
columns Число Нет Количество столбцов в сетке
comment Строка Да* Комментарий для работников, объясняющий, как правильно решить капчу
imgInstructions Строка Да* Изображение с инструкцией для работников. Base64-encoded. Максимальный размер: 100 kB
minClicks Число Нет Минимальное количество плиток, которые должны быть выбраны. По умолчанию: 1. Не может превышать rows * columns
maxClicks Число Нет Максимальное количество плиток, которые могут быть выбраны. По умолчанию: rows * columns
canNoAnswer Число Нет 0 — не разрешено
1 — возможно, что на изображении нет плиток, удовлетворяющих инструкции. Работники увидят кнопку "Нет подходящих картинок", а ответ вернёт No_matching_images
previousId Строка Нет Id вашего предыдущего запроса для того же задания FunCaptcha
imgType Строка Нет Используется для ускоренного распознавания через Computer Vision. Поддерживаемые значения:
funcaptcha — FunCaptcha с кликом по плиткам. Подробнее.
funcaptcha_compare — FunCaptcha с выбором плиток при помощи стрелок. Подробнее.
recaptcha — reCAPTCHA. Подробнее.
Важно: при использовании imgType обязательно передавать comment с инструкцией на английском и отправлять оригинальные файлы изображений, а не скриншоты.
  • Обязательно передать либо comment, либо imgInstructions.

Пример запроса (FunCaptcha)

Метод: createTask
Эндпоинт API: https://api.rucaptcha.com/createTask

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "GridTask",
        "body": "/9j/4AAQSkZJRgABAQAAAQ..HIAAAAAAQwAABtbnRyUkdCIFhZ.wc5GOGSRF//Z",
        "comment": "select all vehicles",
        "rows": 4,
        "columns": 4,
        "imgType": "funcaptcha"
    }
}

Примеры кода

php Copy
  // https://github.com/2captcha/2captcha-php

  require(__DIR__ . '/../src/autoloader.php');

  $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');

  try {
      $result = $solver->grid('path/to/captcha.jpg', ['imgType' => 'funcaptcha']);
  } catch (\Exception $e) {
      die($e->getMessage());
  }

  die('Captcha solved: ' . $result->code);
python Copy
# 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 = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')

solver = TwoCaptcha(api_key)

try:
  result = solver.grid('path/to/captcha.jpg', imgType='funcaptcha')

except Exception as e:
  sys.exit(e)

else:
  sys.exit('solved: ' + str(result))
csharp Copy
  // https://github.com/2captcha/2captcha-csharp

  using System;
  using System.Linq;
  using TwoCaptcha.Captcha;

  namespace TwoCaptcha.Examples
  {
      public class GridExample
      {
          public static void Main()
          {
              var solver = new TwoCaptcha("YOUR_API_KEY");
              Grid captcha = new Grid("path/to/captcha.jpg");
              captcha.ImgType = "funcaptcha"; 
              try
              {
                  solver.Solve(captcha).Wait();
                  Console.WriteLine("Captcha solved: " + captcha.Code);
              }
              catch (AggregateException e)
              {
                  Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
              }
          }
      }
  }
java Copy
  // https://github.com/2captcha/2captcha-java

  package examples;

  import com.twocaptcha.TwoCaptcha;
  import com.twocaptcha.captcha.Grid;

  public class GridExample {
      public static void main(String[] args) {
          TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
          Grid captcha = new Grid("path/to/captcha.jpg");
          captcha.setImgType("funcaptcha");
          try {
              solver.solve(captcha);
              System.out.println("Captcha solved: " + captcha.getCode());
          } catch (Exception e) {
              System.out.println("Error occurred: " + e.getMessage());
          }
      }

  }
go Copy
  // https://github.com/2captcha/2captcha-go

  package main

  import (
      "fmt"
      "log"
      "github.com/2captcha/2captcha-go"
  )

  func main() {
      client := api2captcha.NewClient("API_KEY")
      captcha := api2captcha.Grid{
          File: "/path/to/captcha.jpg",
          ImgType: "funcaptcha",
      }

      code, err := client.Solve(captcha.ToRequest())
      if err != nil {
          log.Fatal(err);
      }
      fmt.Println("code "+code)
  }
ruby Copy
  require 'api_2captcha'

  client =  Api2Captcha.new("YOUR_API_KEY")

  result = client.grid({
    image: 'path/to/captcha.jpg',
    imgType: 'funcaptcha'
  })