Удобная PHP-обёртка для сервиса распознавания капчи rucaptcha.com.
Оригинальная документация доступна по ссылке.
$ composer require --prefer-dist gladyshev/rucaptcha-client "*"
or
"require": {
...
"gladyshev/rucaptcha-client": "*"
...
}
Больше примеров в папке examples.
/* Simple */
$rucaptcha = new Rucaptcha\Client(
Rucaptcha\Config::fromApiKey(getenv('__RUCAPTCHA_KEY__')),
new GuzzleHttp\Client() // Any PSR-18 HTTP-client
);
$captchaText = $rucaptcha->recognizeFile('captcha.png');
print_r($captchaText); // h54g6
/* Advanced example */
$rucaptcha = new \Rucaptcha\Client(
\Rucaptcha\Config::fromApiKey('YOUR_API_KEY'),
new \GuzzleHttp\Client(['base_uri' => 'https://2captcha.com']),
new \Monolog\Logger('2Captcha', [new \Monolog\Handler\StreamHandler('php://stdout')])
);
$taskIds = [];
$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha1.png'));
$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha2.jpg'));
$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha3.gif'), [
Rucaptcha\Extra::NUMERIC => 1
]);
$results = [];
while (count($taskIds) > 0)
{
// Try get results
foreach ($taskIds as $i=>$taskId)
{
// Wait 5 sec
sleep(5);
$results[$taskId] = $rucaptcha->getCaptchaResult($taskId);
// false === is not ready, on error we've got an exception
if ($results[$taskId] === false) {
continue;
} else {
unset($taskIds[$i]);
}
}
}
print_r($results);
use Rucaptcha\Client;
/* Solving captcha methods */
Client::recognize(string $content, array $extra = []): string;
Client::recognizeFile(string $path, array $extra = []): string;
Client::sendCaptcha(string $content, array $extra = []): int;
Client::getCaptchaResult(int $captchaId): string;
Client::getCaptchaResultBulk(array $captchaIds): array;
/* Pingback stuff */
Client::addPingback(string $uri): void;
Client::getPingbacks(): array;
Client::deletePingback(string $uri): void;
Client::deleteAllPingbacks(): void;
/* Google Recaptcha V2 */
Client::sendRecapthaV2($googleKey, $pageUrl, $extra = []): int
Client::recognizeRecapthaV2($googleKey, $pageUrl, $extra = []): string
/* Other */
Client::getLastCaptchaId(): string;
Client::getBalance(): string;
Client::reportGood(string $captchaId): bool;
Client::reportBad(string $captchaId): bool;
Параметр | Тип | По умолчанию | Возможные значения |
---|---|---|---|
verbose |
bool | false | Включает/отключает логирование в стандартный вывод |
apiKey |
string | '' | Ключ API с которым вызывается сервис |
rTimeout |
integer | 5 | Период между опросами серевера при получении результата распознавания |
mTimeout |
integer | 120 | Таймаут ожидания ответа при получении результата распознавания |
serverBaseUri |
string | 'http://rucaptcha.com' | Базовый URI сервиса |
Параметр | Тип | По умолчанию | Возможные значения |
---|---|---|---|
phrase |
integer | 0 | 0 = одно слово 1 = капча имеет два слова |
regsense |
integer | 0 | 0 = регистр ответа не имеет значения 1 = регистр ответа имеет значение |
question |
integer | 0 | 0 = параметр не задействован 1 = на изображении задан вопрос, работник должен написать ответ |
numeric |
integer | 0 | 0 = параметр не задействован 1 = капча состоит только из цифр 2 = Капча состоит только из букв 3 = Капча состоит либо только из цифр, либо только из букв. |
calc |
integer | 0 | 0 = параметр не задействован 1 = работнику нужно совершить математическое действие с капчи |
min_len |
0..20 | 0 | 0 = параметр не задействован 1..20 = минимальное количество знаков в ответе |
max_len |
1..20 | 0 | 0 = параметр не задействован 1..20 = максимальное количество знаков в ответе |
is_russian |
integer | 0 | параметр больше не используется, т.к. он означал "слать данную капчу русским исполнителям", а в системе находятся только русскоязычные исполнители. Смотрите новый параметр language, однозначно обозначающий язык капчи |
soft_id |
string | ID разработчика приложения. Разработчику приложения отчисляется 10% от всех капч, пришедших из его приложения. | |
language |
integer | 0 | 0 = параметр не задействован 1 = на капче только кириллические буквы 2 = на капче только латинские буквы |
lang |
string | Код языка. См. список поддерживаемых языков. | |
header_acao |
integer | 0 | 0 = значение по умолчанию 1 = in.php передаст Access-Control-Allow-Origin: * параметр в заголовке ответа. (Необходимо для кросс-доменных AJAX запросов в браузерных приложениях. Работает также для res.php.) |
textinstructions |
string | Текст, который будет показан работнику. Может содержать в себе инструкции по разгадке капчи. Ограничение - 140 символов. Текст необходимо слать в кодировке UTF-8. | |
textcaptcha |
string | Текстовая капча. Картинка при этом не загружается, работник получает только текст и вводит ответ на этот текст. Ограничение - 140 символов. Текст необходимо слать в кодировке UTF-8. | |
pingback |
string | URL для автоматической отправки ответа на капчу (callback). URL должен быть зарегистрирован на сервере. Больше информации здесь. | |
recaptcha |
string | Используется при работе со старым алгоритмом распознования Google Recaptcha V2. Больше информации здесь. | |
proxy |
string | Формат: логин:пароль@123.123.123.123:3128 Больше информации о прокси здесь. | |
proxytype |
string | Тип вашего прокси-сервера: HTTP, HTTPS, SOCKS4, SOCKS5. |