API RuCaptcha



 

Cервис антикапчи RuCaptcha.com не только поддерживает стандартное API на равне с сервисами pixodrom, antigate, anti-captcha и других, но и предоставляет расширенный фукнционал пополняющийся под каждый виток борьбы с автоматизацией. API RuCaptcha поддерживает решение ReCaptcha v2 (где нужно кликнуть по картинкам), ClickCaptcha (где нужно кликнуть в определённые точки) и Rotatecaptcha (FunCaptcha и другие капчи, которые нужно крутить).

 

Примеры и библиотеки использования API RuCaptcha

Загрузка изображений через веб-форму (для IMACROS)

 

Распознание ReCaptcha без эмуляции браузера ReCaptcha без браузера


Распознание ReCaptcha, FunCaptcha, крутящихся капч: recaptcha api

Сервис RuCaptcha позволяет присылать капчи и получать их расшифровку в автоматизированном режиме. Для этого понадобится получить APIKEY на странице API вебмастеру и реализовать следующий алгоритм:

1. Прислать картинку на сервер rucaptcha.com
2. Получить ID присланной картинки
3. Запустить цикл, который будет проверять поступление расшифровки
4. Если ответ верный - завершить транзакцию
5. Если ответ не верный - отправить уведомление о неверной расшифровке и завершить транзакцию

Загрузка капчи

Адрес для загрузки капчи: http://rucaptcha.com/in.php

Загрузка капчи возможна в двух форматах:

multipart и base64

Пример загрузки в формате multipart:

<form method="post" action="http://rucaptcha.com/in.php" enctype="multipart/form-data">
<input type="hidden" name="method" value="post">
Ключ от учетной записи:
<input type="text" name="key" value="YOUR_APIKEY">
Файл капчи:
<input type="file" name="file">
<input type="submit" value="загрузить и получить ID">
</form>

 

YOUR_APIKEY - Ваш key, длинной 32 символа

Пример загрузки капчи в формате base64:

<form method="post" action="http://rucaptcha.com/in.php">
<input type="hidden" name="method" value="base64">
Ключ от учетной записи:
<input type="text" name="key" value="YOUR_APIKEY">
Тело файла капчи закодированное в base64:
<textarea name="body">BASE64_FILE</textarea>
<input type="submit" value="загрузить и получить ID">
</form>

YOUR_APIKEY - Ваш key, длинной 32 символа

BASE64_FILE - Тело файла закодированное в base64. Не забудьте дополнительно закодировать тело в URLEncode, иначе тело капчи придет битым.

 

Дополнительные параметры загрузки капчи



 

 

POST параметр возможные значения описание параметра
phrase 0;1 0 = одно слово (значение по умлочанию)
1 = капча имеет два слова
regsense 0;1 0 = регистр ответа не имеет значения (значение по умолчанию )
1 = регистр ответа имеет значение
question 0;1 0 = параметр не задействован (значение по умолчанию )
1 = на изображении задан вопрос, работник должен написать ответ
numeric 0;1;2;3

0 = параметр не задействован (значение по умолчанию)
1 = капча состоит только из цифр
2 = Капча состоит только из букв
3 = Капча состоит либо только из цифр, либо только из букв.

calc 0;1 0 = параметр не задействован (значение по умолчанию)
1 = работнику нужно совершить математическое действие с капчи
min_len 0..20

0 = параметр не задействован (значение по умолчанию)
1..20 = минимальное количество знаков в ответе

max_len 1..20 0 = параметр не задействован (значение по умолчанию)
1..20 = максимальное количество знаков в ответе
is_russian 0;1

параметр больше не используется, т.к. он означал "слать данную капчу русским исполнителям", а в системе находятся только русскоязычные исполнители. Смотрите новый параметр language, однозначно обозначающий язык капчи

soft_id   ID разработчика приложения. Разработчику приложения отчисляется 10% от всех капч, пришедших из его приложения.
language 0;1;2 0 = параметр не задействован (значение по умолчанию)
1 = на капче только кириллические буквы
2 = на капче только латинские буквы
header_acao 0;1 0 = значение по умолчанию
1 = in.php передаст Access-Control-Allow-Origin: * параметр в заголовке ответа. (Необходимо для кросс-доменных AJAX запросов в браузерных приложениях. Работает также для res.php.)
textinstructions TEXT Текст, который будет показан работнику. Может содержать в себе инструкции по разгадке капчи. Ограничение - 140 символов. Текст необходимо слать в кодировке UTF-8.
textinstructions TEXT Текстовая капча. Картинка при этом не загружается, работник получает только текст и вводит ответ на этот текст. Ограничение - 140 символов. Текст необходимо слать в кодировке UTF-8.
pingback site.com/answer.php Указание для сервера, что после распознания изображения, нужно отправить ответ на указанный адрес

Ответы сервера на загрузку капчи:

Ответ сервера Статус Расшифровка
OK|%CAPTCHA_ID%  принято Капча добавлена в очередь на расшифровку.
%CAPTCHA_ID% - ID капчи, который Вам понадобится при запросе статуса расшифровки капчи
ERROR_WRONG_USER_KEY отказано Не верный формат параметра key, должно быть 32 символа
ERROR_KEY_DOES_NOT_EXIST отказано Использован несуществующий key
ERROR_ZERO_BALANCE отказано Баланс Вашего аккаунта нулевой
ERROR_NO_SLOT_AVAILABLE отказано Текущая ставка распознования выше, чем максимально установленная в настройках Вашего аккаунта. Либо на сервере скопилась очередь и работники не успевают её разобрать, повторите загрузку через 5 секунд.
ERROR_ZERO_CAPTCHA_FILESIZE отказано Размер капчи меньше 100 Байт
ERROR_TOO_BIG_CAPTCHA_FILESIZE отказано Размер капчи более 100 КБайт
ERROR_WRONG_FILE_EXTENSION отказано Ваша капча имеет неверное расширение, допустимые расширения jpg,jpeg,gif,png
ERROR_IMAGE_TYPE_NOT_SUPPORTED отказано Сервер не может определить тип файла капчи
ERROR_IP_NOT_ALLOWED отказано В Вашем аккаунте настроено ограничения по IP с которых можно делать запросы. И IP, с которого пришёл данный запрос не входит в список разрешённых.
IP_BANNED отказано IP-адрес, с которого пришёл запрос заблокирован из-за частых обращений с различными неверными ключами. Блокировка снимается через час
ERROR_CAPTCHAIMAGE_BLOCKED отказано Вы прислали картинку, которую невозможно распознать и которая сохранена у нас в базе, как нераспознаваемая картинка. Как правило такое бывает, если сайт, откуда Вы берёте капчу перестал отдавать Вам капчу и начал отдавать заглушку. К примеру 17.08.2016 многие VK-постеры начали получать капчу с текстом "ошибка доступа"

Получение результата расшифровки капчи:

Стандартно делается GET-запросом, но сервер может сам отправить Вам ответ POST-запросом на указанный Вами адрес.

Получение ответа GET-запросом:

http://rucaptcha.com/res.php?key=YOUR_APIKEY&action=get&id=CAPCHA_ID

YOUR_APIKEY - Ваш key, длинной 32 символа
CAPTCHA_ID - ID ранее загруженной капчи

Ответы сервера:

Ответ сервера на запрос статуса Статус расшифровка
OK|%TEXT% готово Капча успешно расшифрована
%TEXT% - расшифрованный текст
CAPCHA_NOT_READY ещё не готово Капча в работе, ещё не расшифрована, необходимо повтороить запрос через несколько секунд
ERROR_KEY_DOES_NOT_EXIST ошибка Вы использовали неверный key в запросе
ERROR_WRONG_ID_FORMAT ошибка Неверный формат ID капчи. ID должен содержать только цифры
ERROR_CAPTCHA_UNSOLVABLE ошибка Капчу не смогли разгадать 3 разных работника. Списанные средства за это изображение возвращаются обратно на баланс
ERROR_WRONG_CAPTCHA_ID ошибка Вы пытаетесь получить ответ на капчу или пожаловаться на капчу, которая была загружена более 15 минут назад
ERROR_BAD_DUPLICATES ошибка Ошибка появляется при включённом 100%м распознании. Было использовано максимальное количество попыток, но необходимое количество одинаковых ответов не было набрано
REPORT_NOT_RECORDED жалоба не принята Такой ответ сервер может отдать на жалобу (reportbad), если до этого вы пожаловались на большое количество верных распознаний

 

Автоматическое получение ответа от сервера POST запросом (pingback):

Сервис rucaptcha.com имеет функционал, при котором Вы можете сократить количество запров к серверу и при этом получать расшифровку изображения моментально, после того, как работник ввёл ответ.

Схема взаимодействия:
1. Вы "регистрируете" адрес, на который в последсвии будет высылаться ответ. Адрес может быть как IP-адресом, так и URL-адресом.
"Зарегистрировать" адрес можно только с того IP-адреса, на который будет высылаться ответ. Т.е. нельзя зарегистрировать адрес для
уведомлений http://microsoft.com/admin, запросив регистрацию с IP 173.194.32.133
2. Вы присылаете изображение, с дополнительным параметром "pingback=http://site.ru/answer.php, изображение может быть прислано с любого адреса, но адрес http://site.ru/answer.php должен быть вами зарегистрирован в первом шаге
3. Изображение распознаётся у нас на сервисе
4. Как только мы получили ответ, мы тут же шлём POST запрос по указанному адресу в формате "CAPTCHA_ID,CODE"

 

Добавление IP:
http://rucaptcha.com/res.php?action=add_pingback&key=API_KEY&addr=127.0.0.1/test.php

Получение всех ардесов добавленых на обратный пинг:
http://rucaptcha.com/res.php?action=get_pingback&key=API_KEY

Удаление адреса:
http://rucaptcha.com/res.php?action=del_pingback&key=YOUR_API_KEY&addr=127.0.0.1/test.php

Удаление всех привязанных адресов:
http://rucaptcha.com/res.php?action=del_pingback&key=YOUR_API_KEY&addr=all - удаление всех адресов

Для указания, куда именно должен ответить сервер, при отправке изображения добавьте параметр:
pingback="127.0.0.1/test.php"

Ограничения и дополнительная информация по регистрации адресов для ответа:
1. Добавить адрес для уведомления можно только с того сервера, чей адрес вы добавляете. Если вы хотите, что бы ответ был отправлен на адрес 127.0.0.1/answer, то запрос на добавление этого адреса должен прийти с сервера 127.0.0.1
2. Максимум можно добавить 100 адресов
3. Не важно, с какого IP было загружено изображение, ответ будет выслан на указанный адрес, если он добавлен в лист адресов Вашего аккаунта
4. Разные пользователи могут добавлять одинаковые адреса, конфлика не будет.

Дополнительные возможности API

 

 

Запрос Варианты ответа Расшифровка
json=true
 
{"status":1,"request":"%TEXT%"} Получение ответа от сервера в формате JSON. Работает для in.php и res.php
Status = 1 капча распознана, Status = 0 ошибка
action=get&ids=CAPTCHA_ID_1,CAPTCHA_ID_2,...,CAPTCHA_ID_N
 
%TEXT_1%|%TEXT_2%...%TEXT_N% Запрос статуса сразу нескольких капч. Распознанный текст либо код CAPCHA_NOT_READY будут в этом случае разделены знаком "|"
action=get2&id=CAPCHA_ID
 
%OK%|%TEXT%|%COST% Запрос статуса и стоимости распознования данной капчи. Цена указывается в рублях
action=reportbad&id=CAPCHA_ID OK_REPORT_RECORDED Пожаловаться на неправильно расшифрованную капчу
action=getbalance %BALANCE% Узнать баланс аккаунта. Баланс указывается в Российских рублях
action=getstats&date=2013-11-27 %FILE.XML% получить статистику использования аккаунта в XML за указанную дату
http://rucaptcha.com/load.php 5 88.3 0.014 14.965648650099 waiting: количество работников ожидающих капчу.
load: процент загрузки работников
minbid: текущая ставка за распознание капчи. В рублях
averageRecognitionTime: среднее время (в секундах) за которое в данный момент разгадываются капчи

Распознание ReCaptcha v2 (ASIRA)

UPD: в последнее время, ReCaptcha начала выдавать изображения не только 3x3 или 4x4, но и другие форматы. В скором времени мы добавим новые параметры, где вы будете сообщать нам размер сетки (кол-во столбоцв и строк).

Для решения рекапчи, где нужно выбирать определённые квадраты, мы ввели новые параметры. Общая схема решения рекапчи:
1) Вы ставите галочку
2) Получаете изображение + инструкцию
3) Отправляете нам изображение + инструкцию (оригинальное изображение, без сетки и синего блока)
4) Получаете от нас ID капчи
5) Мы смотрим размер изображение. Если оно 300x300px, то кладём на него сетку 3x3, если другой размер - кладём сетку 4x4
6) Через 5 секунд обращаетесь за ответом на капчу
7) Мы предоставляем номера картинок, которые нужно нажать для прохождения капчи
8) Кликаете по указанным изображениям.
Формат ответа:
OK|click:3/8/9/
Стоимость 1000 распознаний данной капчи - 70 рублей.

Параметр Пояснение
recaptcha=1 Признак того, что данная картинка должна обработаться как рекапча. Т.е. наложится сетка 3х3 или 4х4 и работник будет искать нужные квадраты
textinstructions=%TEXT% Текст того, что нужно выбрать на картинке в кодировке UTF-8
Данный параметр не обязателен, если отправляется imginstructions
imginstructions=img "img" картинка инструкции. Её можно отправить multipart и base64.
Данный параметр не обязателен, если отправляется textinstructions

Ограничения на recaptcha=1:
1) Каптча должна быть не более 100Кбайт
2) imginstructions должна быть не более 25Кбайт
3) imginstructions должна быть не более 100х100px
4) textinstructions не более 140 символов

Обратите внимание, что рекапчи бывают не только 3 на 3 квадрата, но попадаются и 4 на 4 квадрата. Что бы понять какую именно картинку Вы шлёте, мы смотрим размер в px картинки. Если она 300x300px, то мы накладываем на эту картинку сетку 3х3. Если размер другой - накладываем сетку 4х4. Поэтому не надо склеивать изображение с чем-либо.

Обратите внимание, что необходимо засылать саму картинку рекапчи, а не делать её скриншот.

Распознание любой ClickCaptcha (в том числе и ReCaptcha 2.0)

Общая схема взаимодействия:
1) Вы присылаете картинку (+ можно прислать текст до 140 символов)
2) Работники кликают в определённые точки
3) Мы возвращаем Вам координаты точек, куда кликнул работник. Точка x=0, y=0 соответсвует верхнему левому углу

Формат ответа сервера на такую капчу:
OK|coordinate:x=39,y=59;x=252,y=72
Стоимость 1000 распознаний данной капчи - 70 рублей.

Параметр Пояснение
coordinatescaptcha=1 Признак того, что это кликовая капча. Работник не сможет вводить ответ с клавиатуры, ему нужно будет кликнуть в нужные места на картинке.
textinstructions=%TEXT% Текст того, что нужно выбрать на картинке в кодировке UTF-8
Данный параметр не обязателен, если по картинке понятно куда нужно кликнуть - можно не присылать

RotateCaptcha (FunCaptcha и другие капчи, где нужно крутить картинку)

Общая схема взаимодействия:
1)Вы присылаете одну или несколько картинок
2)Вы присылаете на какой угол нужно поворачивать изображение за один шаг (не обязательный параметр)
3)Мы даём работнику все картинки, что Вы прислали. Рядом с каждой картинкой - стрелочки, кликая по которым картинка поворачивается на заданный Вами угол
4)Мы возвращаем Вам угол, на который нужно повернуть изображение

Формат ответа сервера на такую капчу, на 3 присланных картинки:
OK|40|200|-120
Отрицательное значение: картинку нужно повернуть против часовой стрелки на указанный угол
Положительное значение: картинку нужно повернуть по часовой стрелке Стоимость 1000 повёрнутых изображений - 35 рублей.

Параметр Пояснение
method=rotatecaptcha Признак того, что это капча, которую нужно крутить. Работник не сможет вводить ответ с клавиатуры, ему нужно будет кликать по стрелкам для вращения изображения.
angle=45 угол, на который поворачиватся изображение при одном клике на стрелку. Если параметр не задан, то угол по умолчанию = 40 градусам, как у FunCaptcha
file_1, file_2, file_3 Изображения, которые будут крутить работники сервиса

пример загрузки rotatecaptcha:

<form method="post" action="http://rucaptcha.com/in.php" enctype="multipart/form-data">

KEY:<br>
<input  name="key" value="YOURKEY"><br>
Type<br>
<input  name="method" value="rotatecaptcha"><br>
Angle<br>
<input  name="angle" value="40"><br>


Files:<br>
<input type="file" name="file_1"><br>
<input type="file" name="file_2"><br>
<input type="file" name="file_3"><br>

Upload:<br>
<input type="submit" value="Upload and get ID">
</form>

 

 

Ограничение на количество обращений к серверу

Пожалуйста, помните о том, что каждый запрос пораждает множество запросов к БД, используйте разумные таймауты, что бы не перегружать наши сервера. К примеру, если в ответ на загрузку капчи мы вернули ошибку ERROR_NO_SLOT_AVAILABLE, сделайте паузу на 2-3 секунды прежде чем повторить попытку, а если получили ERROR_ZERO_BALANCE то можно и в 60 секунд таймаут сделать. После загрузки капчи обращайтесь за ответом не сразу, а через 3-5 секунд ( 10-20 если это рекапча) с таймаутом в 2-3 секунды, если ответ на капчу ещё не готов.

 

Список ошибок, возвращаемых сервером при блокировке:
Ошибка Срок блокировки Причина блокировки
ERROR: 1001 10 минут Вы получили 120 ошибок ERROR_NO_SLOT_AVAILABLE за минуту, т.к. ваша максимальная ставка выше текущей ставки сервера
ERROR: 1002 5 минут Вы получили 120 ошибок ERROR_ZERO_BALANCE за минуту, т.к. баланс вашего аккаунта нулевой
ERROR: 1003 30 секунд Вы получаете ERROR_NO_SLOT_AVAILABLE, т.к. загружаете очень много капч и на сервере скопилась очередь из ваших капч, которые ещё не назначены работникам.
Вы получили в 3 раза больше ошибок, чем загрузили капч (но не менее 120). Увеличьте таймаут при возникновении данной ошибки.
ERROR: 1004 10 минут IP-адрес заблокирован, т.к. с него пришло 5 запросов с несуществующим ключом
ERROR: 1005 5 минут От Вас поступило слишком много запросов к res.php
Блокировка назначается при срабатывании правила R > C * 20 + 1200
Где:
R - количество запросов к res.php
C - количество загруженных капч
Другими словами, в среднем на 1 загруженную капчу Вы должны делать не более 20 запросов за её ответом. Обратите внимание, что запрос баланса учитывается как отдельный запрос к res.php
Если Вам нужно максимально быстро получить ответ на капчу, воспользуйтесь функционалом pingback при котором мы сами отправим вам ответ как только получим его.