API KEY
Для получения ключа API создайте аккаунт в MultiBot.
APIKEY: - ваш ключ от сервиса MultiBot
АДРЕС ОТПРАВКИ ЗАДАНИЯ [ POST, GET ]
https://api.multibot.in/in.php
ВАЖНО: При отправке POST, тип содержимого должен быть "multipart/form-data"
ПОЛУЧЕНИЕ ОТВЕТА [ GET ]
https://api.multibot.in/res.php?key=APIKEY&id=ID
ID: - id капчи
ПОЛУЧИТЬ БАЛАНС [ GET ]
https://api.multibot.in/res.php?action=userinfo&key=APIKEY
Ответ в формате JSON:
{"email":"my@gmail.com","balance":"15774"}
ПОЛУЧИТЬ Актуальный userAgent [ GET ]
https://api.multibot.in/res.php?action=useragent&key=APIKEY
Решение hCaptcha с помощью токена.
Полученный токен вставьте в поле h-captcha-response
или передайте в функцию обратного вызова window.hcaptchaCallback(token).
Получить функцию обратного вызова: [ JavaScript ]
(() => {
var _hCap;
Object.defineProperty(window, "hcaptcha", {
get: function (){
return _hCap;
},
set: function (e){
_hCap = e;
var _Render = e.render;
_hCap.render = function (a, b){
window.hcaptchaCallback = b.callback;
return _Render(a, b);
};
},
});
})()
Список параметров для GET/POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | hcaptcha |
| sitekey | Строка | Да | Значение параметра "data-sitekey", которое вы нашли в коде страницы |
| pageurl | Строка | Да | Полный URL страницы |
| data | Строка | Нет | В большинстве случаев встречается в виде параметра "rqdata" в сетевых запросах.Формат: "data": "rqDataValue" |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| proxy | Строка | Нет | http://LOGIN:PASS@IP:PORT или socks5://LOGIN:PASS@IP:PORT |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "hcaptcha",
"pageurl": "https://multibot.in/captchas/hcaptcha/",
"sitekey": "5860d916-b6c4-4274-9bfa-3f32d13cedda",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
reCaptcha [ Token ]
Решение reCaptcha с помощью токена.
Полученный токен вставьте в поле g-recaptcha-response или передайте в функцию обратного вызова window.reCaptchaCallback(token).
Получить функцию обратного вызова. [ JavaScript ]
(() => {
function getRecaptchaInfo(widget){
for(let k1 in widget){
for(let k2 in widget[k1]){
for(let k3 in widget[k1][k2]){
if(k3 === "callback"){
if(typeof widget[k1][k2][k3] === "function"){
window.reCaptchaCallback = widget[k1][k2][k3];
}
}
}
}
}
};
for(let widgetId in ___grecaptcha_cfg.clients){
getRecaptchaInfo(___grecaptcha_cfg.clients[widgetId]);
}
})()
Список параметров для GET/POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | userrecaptcha |
| version | Строка.По умолчанию: v2 | Нет | Версия reCAPTCHA: v2 или v3 |
| enterprise | Число.По умолчанию: 0 | Нет | 1 — указывает на то, что это reCAPTCHA Enterpise |
| googlekey | Строка | Да | Значение параметра "sitekey", которое вы нашли в коде сайта |
| pageurl | Строка | Да | Полный URL страницы |
| action | Строка | Нет | Значение параметра "action", которые вы нашли в коде сайта |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| proxy | Строка | Нет | LOGIN:PASS@IP:PORT |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "userrecaptcha",
"pageurl": "https://www.google.com/recaptcha/api2/demo",
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Geetest [ Token ]
Решение Geetest с помощью токена.
Доступные типы капч: slide, icon, nine, winlinze, ai (невидимая).
Успешный ответ будет содержать json с параметрами.Все параметры необходимы при отправке формы на целевом сайте.
Получить параметры. [ JavaScript ]
new PerformanceObserver(list =>
list.getEntries()
.filter(e => e.name.includes('gcaptcha4.geetest.com/load?'))
.forEach(e => {
const p = new URL(e.name).searchParams;
const captchaId = p.get('captcha_id');
const challenge = p.get('challenge');
const riskType = p.get('risk_type');
captchaId && challenge && console.log('GeeTest v4:', {
captchaId, challenge, riskType
});
})
).observe({type: 'resource', buffered: true});
Список параметров для GET/POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | geetest |
| captchaId | Строка | Да | Ключ-идентификатор GeeTest - параметр captcha_id |
| riskType | Строка | Да | тип капчи - параметр riskType (ai, slide, icon, nine или winlinze) |
| challenge | Строка | Нет | Значение параметра "challenge", которые вы нашли в коде сайта |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| proxy | Строка | Нет | http://LOGIN:PASS@IP:PORT или socks5://LOGIN:PASS@IP:PORT |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "geetest",
"captchaId": "54088bb07d2df3c46b79f80300b0abbe",
"riskType": "slide",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Решение обычной капчи Turnstile с помощью токена.
Полученный токен вставьте в поле name="cf-turnstile-response" или передайте в функцию обратного вызова.
Список параметров для GET/POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | turnstile |
| sitekey | Строка | Да | Значение параметра "sitekey" найденное на странице |
| pageurl | Строка | Да | Полный URL страницы |
| action | Строка | Нет | Значение дополнительного параметра "action", найденного на странице. |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| proxy | Строка | Нет | LOGIN:PASS@IP:PORT |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "turnstile",
"pageurl": "https://turnstile.zeroclover.io/",
"sitekey": "0x4AAAAAAAEwzhD6pyKkgXC0",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
CaptchaFox [ Token ]
Решение CaptchaFox с помощью токена.
Полученный токен вставьте в поле name="cf-captcha-response" или передайте в функцию обратного вызова.
Список параметров для GET/POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | captchafox |
| sitekey | Строка | Да | Значение параметра "sitekey" найденное на странице |
| pageurl | Строка | Да | Полный URL страницы |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| proxy | Строка | Нет | LOGIN:PASS@IP:PORT |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "captchafox",
"pageurl": "https://captchafox.com/",
"sitekey": "sk_xtNxpk6fCdFbxh1_xJeGflSdCE9tn99G",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Изображение [ OCR ]
Распознавание текста с картинки.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | universal |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "universal",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Slider [ Coordinate ]
Ответ будет иметь количество пикселей на которое необходимо сдвинуть слайдер.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | slider |
| background | Строка | Да | Основная картинка в Base64 |
| piece | Строка | Да | картинка слайдера в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "slider",
"background": "iVBORw0KG...EFUeF6Ev",
"piece": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Slider [ Coordinate ]
Ответ будет иметь количество пикселей на которое необходимо сдвинуть слайдер.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | slider |
| background | Строка | Да | Основная картинка в Base64 |
| piece | Строка | Да | картинка слайдера в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "slider",
"background": "iVBORw0KG...EFUeF6Ev",
"piece": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
pCaptcha [ Coordinate ]
Ответ будет иметь список координат для кликов [ X:Y,X:Y,X:Y ].
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | cls |
| type | Строка | Да | pCaptcha |
| task | Строка | Да | Задание на англ. языке. |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "cls",
"type": "pCaptcha",
"task": "Find the airplane",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Amazon [ Coordinate ]
Ответ будет иметь список координат для кликов [ X:Y,X:Y,X:Y ].
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | cls |
| type | Строка | Да | AmazonGrid |
| task | Строка | Да | Задание на англ. языке. |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "cls",
"type": "AmazonGrid",
"task": "the beds",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Bitcotasks [ Click ]
Ответ будет иметь имя иконки для клика.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | cls |
| type | Строка | Да | Bitcotasks |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "cls",
"type": "Bitcotasks",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
RsCaptcha [ Coordinate ]
Ответ будет содержать координаты клика.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | rscaptcha |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "rscaptcha",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Upside-Down [ Coordinate ]
Ответ будет содержать координаты клика.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | upside |
| body | Строка | Да | картинка в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "upside",
"body": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
AntiBot [ Coordinate ]
Ответ будет содержать порядок идентификаторов картинок для клика.
Идентификаторы картинок можно найти на странице (атрибут "rel"), или присвоить индивидуальное значение для каждой картинки.
Список параметров для POST запросов
| Параметр | Тип | Обязательный | Значение |
|---|---|---|---|
| key | Строка | Да | Ваш ключ API |
| method | Строка | Да | antibot |
| main | Строка | Да | Основная картинка в Base64 |
| * | число (идентификатор) | Да | картинка для клика в Base64 |
| json | Число.По умолчанию: 0 | Нет | 1 — ответ в формате JSON |
| callbackUrl | Строка | Нет | Веб-адрес для отправки результата задачи капчи (POST json). |
Пример отправки запроса. [ Python ]
import requests
params = {
"key": APIKEY,
"method": "antibot",
"main": "iVBORw0KG...EFUeF6Ev",
"1652": "iVBORw0KG...EFUeF6Ev",
"5606": "iVBORw0KG...EFUeF6Ev",
"8655": "iVBORw0KG...EFUeF6Ev",
"2707": "iVBORw0KG...EFUeF6Ev",
"json": "1"
}
for key in params:
params[key] = (None, params[key])
requests.post('https://api.multibot.in/in.php', files=params)
Движение мыши [ Path ]
Метод "Движение мыши" рассчитывает траекторию перемещения курсора мыши между заданными точками, включая как обычное перемещение, так и перемещение с зажатой кнопкой (перетаскивание).
Метод принимает вложенный список координат точек маршрута в формате [start, end]:
[[x1, y1], [x2, y2], ..., [xn, yn]]
где каждая пара [x, y] представляет координаты точек.
При успешном выполнении вы получите путь движения мыши между точками:
[[x, y, sleep], [x, y, sleep], ...]
где x, y - координаты курсора на каждом шаге, sleep - ожидание (в миллисекундах) перед следующим шагом.
Описание параметров
clientKey: ваш ключ от сервиса.
type: humanMove
Метод создания задачи
POST https://api.multibot.in/createTask
Запрос
// комбинированый (движение и перетаскивание)
{
"clientKey": APIKEY,
"type":"humanMove",
"task": [
{"type": "move", "patch":[[0,0], [100,100]]},
{"type": "drag", "patch":[[100,100], [190,190]]},
{"type": "move", "patch":[[190,190], [320,320]]}
]
}
// только движение
{
"clientKey": APIKEY,
"type":"humanMove",
"task": [
{"type": "move", "patch":[[0,0], [190,190], [210,210], [320,320]]}
]
}
#пример
requests.post(
'https://api.multibot.in/createTask',
headers={'content-type': 'application/json'},
json=json,
timeout=10
).json()
Ответ
{
"errorId":0,
"taskId":407533072
}
Метод получения результата задачи
POST https://api.multibot.in/getTaskResult
Запрос
{
"clientKey":"API_KEY",
"taskId": 407533072
}
#пример
requests.post(
'https://api.multibot.in/getTaskResult',
headers={'content-type': 'application/json'},
json=json,
timeout=10
).json()
Ответ
// комбинированый (движение и перетаскивание)
{
"errorId": 0,
"status": "ready",
"cost": 1,
"answers":[
{
"type": "move",
"path": [[1,-1,8], [8,0,7], ...],
"start": [0,0],
"end": [100,100]
},
{
"type": "drag",
"path": [[104,106,8], [108,112,7], ...],
"start": [100,100],
"end": [190,190]
},
{
"type": "move",
"path": [[193,193,6], [198,202,9], ...],
"start": [190,190],
"end": [320,320]
}
],
"spentTime": 1
}
// только движение
{
"errorId": 0,
"status": "ready",
"cost": 1,
"answers":[
{
"type": "move",
"path": [[0,1,15], [0,2,7], ...],
"start": [0,0],
"end": [190,190]
},
{
"type": "move",
"path": [[194,194,7], [198,198,9], ...],
"start": [190,190],
"end": [210,210]
},
{
"type": "move",
"path": [[212,210,8], [214,213,7], ...],
"start": [210,210],
"end": [320,320]
}
],
"spentTime": 2
}
errorId: Идентификатор ошибки.
0 - ошибок нет, задача успешно создана, идентификатор задачи находится в параметре taskId
1 - ошибка, информация о ней находится в свойстве errorCode.
taskId:
Идентификатор задания для последующего использования в методе getTaskResult.
status:
processing - задача в процессе выполнения
ready - задача выполнена, решение находится в свойстве answers.
error - задача не была выполнена.
answers: Словарь с данными
type - движение или перетаскивание
path - путь в виде вложеного списка (x,y,sleep)
start - начало движения
end - конец движения
spentTime:
Потраченное время на решение задачи в сек.
cost:
Стоимость задания, списанная с вашего баланса
Описание ошибок
Убедитесь, что тип капчи, который вам нужно разгадать, поддерживается сервисом.
| Текст Ошибки | Описание |
|---|---|
| ERROR_METHOD_DOES_NOT_EXIST | Неправильно указан тип капчи (значение параметра "method"). |
| WRONG_METHOD | Не указан тип капчи (значение параметра "method"). |
| ERROR_BAD_DATA | Не передан один (или несколько) параметров для капчи. |
| ERROR_WRONG_USER_KEY | API-ключ не существует в системе или имеет неверный формат. |
| ERROR_ZERO_BALANCE | Пополните баланс своего кабинета, чтобы продолжить распознавание. |
| WRONG_COUNT_IMG | Для метода "antibot" отправлено менее трех картинок.Необходимо 3 и более. |
| CAPCHA_NOT_READY | Решение данной капчи еще не готово. |
| WRONG_CAPTCHA_ID | Капча с таким ID не была найдена. |
| WRONG_REQUESTS_LINK WRONG_LOAD_PAGEURL |
Проверьте формат параметра "pageurl". |
| ERROR_SITEKEY SITEKEY_IS_INCORRECT |
Неверный sitekey. |
| WRONG_RESULT | Сервис не смог решить капчу. |
| HCAPTCHA_NOT_FOUND TURNSTILE_NOT_FOUND |
Данный тип капчи отсутствует на странице переданный в параметре "pageurl". |
Расширение для браузера.
Chrome:
Firefox:
Загрузка расширения ( zip ) с настройками:
1. Разархивируйте файл zip
2. Удалите в файле manifest.json следующие строки:
"options_ui": {
"open_in_tab": true,
"page": "options/options.html"
},
3. Пропишите в файле "\common\config.js" ключ apiKey и выберите типы капч (true - включить, false - отключить):
default: {
isPluginEnabled: true,
apiKey: null, // ваш ключ от сервиса ,например: "Dghhh....545Fg"
email: null,
autoSubmitForms: false, // submit формы при успешном решении капчи
submitFormsDelay: 3, // задержка (сек) перед submit
hcaptchabase64Attempts: 30, // попытки решения hCaptcha кликами
hcaptchaType: "token", // метод решения hCaptcha ("token" или "click")
afterDecisionAntibot: true, // Если на страницы есть AntiBot, то сначала решить его
refreshPage: true, // Обновить страницу,если не удалось решить капчу
deleteCoockie: false, // Удалить сессионые куки при обновлении страницы
oneCaptchaPerPage: true, // Последовательное решение капч
interceptorRecaptcha: false,// Иньекция скрипта для reCaptcha
solveNormal: false, // Обычная капча (текст на картинке)
solveRecaptchaV2: false, // RecaptchaV2
solveRecaptchaV3: false, // RecaptchaV3
solveHCaptcha: false, // HCaptcha
solveAntiBot: false, // AntiBot
solveFaucetPay: false, // FaucetPay
solveUpside: false, // Upside-Down
solveTurnstile: false, // Turnstile
solveIconCaptcha: false, // IconCaptcha
normalSources: [],
autoSubmitRules: [],
hostsForClick: ["store.steampowered.com"],
defaultTimeoutToken: 300,
defaultTimeout: 30
},