FunCaptcha Compare (Сопоставление иконок)
Этот тип FunCaptcha отображает изображение с набором иконок внизу и эталонным набором иконок вверху. Пользователю нужно сопоставить иконки с левой стороны с соответствующими иконками в верхнем правом наборе.
Например, изображение может показывать иконки фруктов внизу и те же иконки в другом порядке в правом верхнем углу. Пользователь должен выбрать каждую подходящую иконку правильно.
Как и другие капчи на основе изображений FunCaptcha, она может быть решена через универсальный отдельный метод API на основе токенов, а также через универсальный Grid-метод.
Изображение капчи делится на части, и результат решения возвращается в виде списка выбранных индексов плиток.
Возвращает массив выбранных индексов плиток, где 0 соответствует верхнему левому углу сетки.
- Поддерживаемые форматы изображений: JPEG, PNG, GIF
- Максимальный размер файла: 600 кБ
- Максимальный размер изображения: 1000px по любой стороне
Спецификация GridTask (FunCaptcha Compare)
| Свойство | Тип | Обязательное | Описание |
|---|---|---|---|
| type | String | Да | Тип задачи: GridTask |
| body | String | Да | Капча изображение в Base64. Поддерживается также формат Data-URI (с префиксом data:content/type) |
| rows | Number | Нет | Количество строк в сетке |
| columns | Number | Нет | Количество колонок в сетке |
| comment | String | Да* | Текст инструкции для исполнителей, объясняющий, как правильно решить капчу |
| imgInstructions | String | Да* | Инструкционное изображение для исполнителей. Кодировано в Base64. Максимальный размер: 100 кБ |
| minClicks | Number | Нет | Минимальное количество плиток, которое нужно выбрать. По умолчанию: 1. Не может превышать rows * columns |
| maxClicks | Number | Нет | Максимальное количество плиток, которое можно выбрать. По умолчанию: rows * columns |
| canNoAnswer | Number | Нет | 0 — не разрешено 1 — возможно, что ни одна плитка не соответствует инструкции. Исполнители увидят кнопку "Нет подходящих изображений", а ответ вернет No_matching_images |
| previousId | String | Нет | ID вашего предыдущего запроса для той же задачи FunCaptcha |
| imgType | String | Нет | Используется для ускоренного распознавания через Computer Vision. Поддерживаемые значения:funcaptcha — FunCaptcha с кликом по плиткам. Подробнее.funcaptcha_compare — FunCaptcha с сопоставлением иконок / выбор с помощью стрелок. Подробнее.recaptcha — reCAPTCHA. Подробнее.Важно: при использовании imgType необходимо предоставить comment на английском и загрузить оригинальные файлы изображений (не скриншоты). |
- Вы должны предоставить либо
comment, либоimgInstructions.
Пример запроса (FunCaptcha Compare)
Метод: createTask
API-эндпоинт: https://api.rucaptcha.com/createTask
json
{
"clientKey": "key",
"task": {
"type": "GridTask",
"body": "/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0",
"comment": "Match the icons on the left with the icons on the top faces of the dice (1 of 1) (instructions must be in English)",
"imgType": "funcaptcha_compare"
}
}
Примеры кода
php
// 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_compare']);
} catch (\Exception $e) {
die($e->getMessage());
}
die('Captcha solved: ' . $result->code);
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 = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key)
try:
result = solver.grid('path/to/captcha.jpg', imgType='funcaptcha_compare')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
csharp
// 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_compare";
try
{
solver.Solve(captcha).Wait();
Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (AggregateException e)
{
Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
}
}
}
}
java
// 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_compare");
try {
solver.solve(captcha);
System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
}
}
go
// 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_compare",
}
code, err := client.Solve(captcha.ToRequest())
if err != nil {
log.Fatal(err);
}
fmt.Println("code "+code)
}
ruby
require 'api_2captcha'
client = Api2Captcha.new("YOUR_API_KEY")
result = client.grid({
image: 'path/to/captcha.jpg',
imgType: 'funcaptcha_compare'
})