Метод Grid
Этот метод можно использовать для обхода задач, в которых к изображению применяется сетка и вам нужно щелкнуть по плиткам сетки, например, по изображениям reCAPTCHA или hCaptcha.
Возвращает массив индексов плиток, где 1 - верхняя левая плитка.
Поддерживаемые форматы изображений: JPEG, PNG, GIF
Максимальный размер файла: 600 kB
Максимальный размер изображения: 1000px с любой стороны
Спецификация для типа задачи GridTask
Свойство | Тип | Обязателен | Описание |
---|---|---|---|
type | Строка | Да | Тип задачи: GridTask |
body | Строка | Да | Изображение закодировано в формат Base64. Также поддерживается формат Data-URI (содержащий префикс data:content/type ) |
rows | Число | Нет | Количество строк в сетке |
columns | Число | Нет | Количество столбцов в сетке |
comment | Строка | Да* | Работникам будет показан комментарий, который поможет им правильно разгадать капчу |
imgInstructions | Строка | Да* | Изображение с инструкцией, которое будет показано работникам. Изображение должно быть закодировано в формат Base64. Максимальный размер файла: 100 kB |
minClicks | Число | Нет | Минимальное количество плиток которые должны быть выбраны на изображении. По умолчанию: 1 . Не может быть больше чем rows * columns |
maxClicks | Число | Нет | Максимальное количество плиток которые могут быть выбраны на изображении. По умолчанию: rows * columns |
canNoAnswer | Число | Нет | 0 — не определено 1 — возможно, что изображение не содержит картинок, которые удовлетворяют инструкции. Устанавливайте значение 1 только если на изображении может не быть картинок с правильным ответом. Мы покажем работнику кнопку "Нет подходящих картинок", а вы получите в ответе No_matching_images. |
previousId | Строка | Нет | Id вашего предыдущего запроса в рамках того же задания reCAPTCHA |
imgType | Строка | Нет | Изображение будет распознано с помощью Computer Vision, что позволяет значительно сократить время решения капчи. Поддерживаемые варианты значений: funcaptcha - отправка FunCaptcha, версия в которой необходимо кликнуть по квадрату соответствующему требованиям. Больше информации здесь.funcaptcha_compare - отправка FunCaptcha, версия в которой при помощи стрелок нужно выбрать необходимый квадрат. Больше информации здесь.recaptcha - отправка reCAPTCHA. Больше информации здесь.hcaptcha - отправка hCaptcha. Больше информации здесь.Важно: при использовании параметра imgType обязательно передавать параметр comment содержащий исходную инструкцию к капче на Английском языке, также вам необходимо отправлять исходые файлы изображений а не скриншоты. |
- обязательно передать либо
comment
, либоimgInstructions
Пример запроса
Метод: createTask
Эндпоинт API: https://api.2captcha.com/createTask
{
"clientKey":"YOUR_API_KEY",
"task": {
"type":"GridTask",
"body":"/9j/4AAQSkZJRgABAQAAAQ..HIAAAAAAQwAABtbnRyUkdCIFhZ.wc5GOGSRF//Z",
"comment":"select all vehicles",
"rows": 4,
"columns": 4
}
}
Пример ответа
Метод: getTaskResult
Эндпоинт API: https://api.2captcha.com/getTaskResult
{
"errorId": 0,
"status": "ready",
"solution": {
"click": [
4,
8,
12,
16
]
},
"cost": "0.0012",
"ip": "1.2.3.4",
"createTime": 1692863536,
"endTime": 1692863556,
"solveCount": 1
}
Примеры кода
// 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');
} catch (\Exception $e) {
die($e->getMessage());
}
die('Captcha solved: ' . $result->code);
# 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')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
// 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");
try
{
solver.Solve(captcha).Wait();
Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (AggregateException e)
{
Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
}
}
}
}
// 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");
try {
solver.solve(captcha);
System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
}
}
// 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",
}
code, err := client.Solve(captcha.ToRequest())
if err != nil {
log.Fatal(err);
}
fmt.Println("code "+code)
}
require 'api_2captcha'
client = Api2Captcha.new("YOUR_API_KEY")
result = client.grid({ image: 'path/to/captcha.jpg'})
# OR
result = client.grid({
image: 'https://site-with-captcha.com/path/to/captcha.jpg'
})