Обход капчи на PHP
Используйте PHP для создания решения по автоматическому обходу капчи. Сервис предоставляет лучший показатель успешного распознавания капчи.
Пакет PHP для простой интеграции с API сервиса решения капчи 2Captcha для обхода reCAPTCHA, Arkose captcha, Geetest и решения любых других капч.
Быстрый стартУстановка
Пакет скриптов можно установить с помощью установщика пакетов или вручную
Composer
Для автоматической установки пакета библиотек необходимо воспользоваться стандартным решением для PHP пакетов - Composer. Скачайте его по ссылке и инсталлируйте по инструкции. После установки приложения используйте команду
composer require 2captcha/2captcha
Ручная установка
Скачайте содержимое папки src
в ваш проект и активируйте автозагрузчик src/autoloader.php
командой
require 'path/to/autoloader.php';
Примеры кода, а также библиотеки и модули для интеграции с нашим API вы также можете найти в репозитории на GitHub.
Конфигурация
Описание всех необходимых параметров для конфигурирования установленного пакета
Экземпляр класса TwoCaptcha
можно создать вот так:
$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
Также у вас есть возможность настраивать некоторые опции созданного экземпляра:
$solver = new \TwoCaptcha\TwoCaptcha([
'apiKey' => 'YOUR_API_KEY',
'softId' => 123,
'callback' => 'https://your.site/result-receiver',
'defaultTimeout' => 120,
'recaptchaTimeout' => 600,
'pollingInterval' => 10,
]);
Опции экземпляра TwoCaptcha
Опция | Значение по умолчанию | Описание |
---|---|---|
softId | - | ваш id программного обеспечения, полученный после публикации в каталоге программ 2Captcha |
callback | - | URL вашего веб-сервера, который получает результат распознавания капчи. URL должен быть сначала зарегистрирован в настройках pingback вашей учетной записи |
defaultTimeout | 120 | Таймаут опроса в секундах для всех типов капчи, кроме reCAPTCHA. Определяет, как долго модуль пытается получить ответ от конечной точки API res.php |
recaptchaTimeout | 600 | Таймаут опроса reCAPTCHA в секундах. Определяет, как долго модуль пытается получить ответ от конечной точки API res.php |
pollingInterval | 10 | Интервал в секундах между запросами к конечной точке API res.php , установка значений менее 5 секунд не рекомендуется |
ВАЖНО: как толькоcallback
определен для одного экземпляра классаTwoCaptcha
, все остальные методы возвращают только ID капчи и НЕ опрашивают API для получения результата. Результат будет отправлен на callback URL. Чтобы получить ответ вручную, используйте м етод getResult
Решение капчи
Когда вы отправляете любую графическую капчу, вы можете передавать дополнительные параметры, которые помогут работникам 2Captcha решить ее быстро и правильно.
Опции капчи
Опция | Значение по умолчанию | Описание |
---|---|---|
numeric | 0 | определяет, содержит ли капча числовые или другие символы, подробнее см. в документации по API |
minLength | 0 | минимальная длина ответа |
maxLength | 0 | максимальная длина ответа |
phrase | 0 | определяет, содержит ли ответ несколько слов или нет |
caseSensitive | 0 | определяет, чувствителен ли ответ к регистру |
calc | 0 | определяет капчу, которая требует расчета |
lang | - | определяет язык капчи, смотрите список поддерживаемых языков |
hintImg | - | изображение с подсказкой, показанное работникам с помощью капчи |
hintText | - | подсказка или текст задачи, показываемый работникам с помощью капчи |
- Простая капча
- Текстовая капча
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
Чтобы обойти обычную капчу (искаженный текст на изображении), используйте следующий метод. Этот метод также можно использовать для распознавания любого текста на изображении.
$result = $solver->normal('path/to/captcha.jpg');
Этот метод можно использовать для обхода капчи, которая требует ответа на вопрос в виде открытого текста
$result = $solver->text('If tomorrow is Saturday, what day is today?');
Используйте этот метод для решения reCAPTCHA V2 и получения токена для обхода защиты
$result = $solver->recaptcha([
'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
'url' => 'https://mysite.com/page/with/recaptcha',
]);
Этот метод позволяет обходить reCAPTCHA V3 и возвращает токен
$result = $solver->recaptcha([
'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
'url' => 'https://mysite.com/page/with/recaptcha',
'version' => 'v3',
]);
Метод решения FunCaptcha (Аркоселабс). Возвращает токен для обхода капчи
$result = $solver->funcaptcha([
'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
'url' => 'https://mysite.com/page/with/funcaptcha',
]);
Метод решения капчи головоломки GeeTest. Возвращает набор токенов в формате JSON
$result = $solver->geetest([
'gt' => 'f1ab2cdefa3456789012345b6c78d90e',
'challenge' => '12345678abc90123d45678ef90123a456b',
'url' => 'https://www.site.com/page/',
]);
Метод решения KeyCaptcha на основе токенов
$result = $solver->keycaptcha([
's_s_c_user_id' => 10,
's_s_c_session_id' => '493e52c37c10c2bcdf4a00cbc9ccd1e8',
's_s_c_web_server_sign' => '9006dc725760858e4c0715b835472f22-pz-',
's_s_c_web_server_sign2' => '2ca3abe86d90c6142d5571db98af6714',
'url' => 'https://www.keycaptcha.ru/demo-magnetic/',
]);
Токен-основанный способ обхода капчи Capy puzzle
$result = $solver->capy([
'sitekey' => 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
'url' => 'http://mysite.com/',
'api_server' => 'https://jp.api.capy.me/',
]);
Этот метод изначально назывался Old reCAPTCHA V2. Его можно использовать для обхода любого типа капчи, когда вы можете применить сетку к изображению и вам нужно щелкнуть определенные поля сетки. Возвращает количество ячеек сетки
$result = $solver->grid('path/to/captcha.jpg');
Метод Canvas можно использовать, когда вам нужно нарисовать линию вокруг объекта на изображении. Возвращает набор координат точек для рисования многоугольника.
$result = $solver->canvas('path/to/captcha.jpg');
Метод ClickCaptcha возвращает координаты точек на изображении капчи. Может использоваться, если вам нужно щелкнуть определенные точки на изображении.
$result = $solver->coordinates('path/to/captcha.jpg');
Этот метод можно использовать для решения капчи, которая просит повернуть объект. В основном используется для обхода FunCaptcha. Возвращает значение угла поворота.
$result = $solver->rotate('path/to/captcha.jpg');
Другие методы
Дополнительные допустимые методы применяемые в процессе работы основных скриптов
send / getResult
Этот метод можно использовать для ручной передачи капчи и получения ответов.
$id = $solver->send(['file' => 'path/to/captcha.jpg', ...]);
sleep(20);
$code = $solver->getResult($id);
balance
Используйте этот метод, чтобы получить баланс своего аккаунта.
$balance = $solver->balance();
report
Используйте этот метод, чтобы сообщить о правильном или неправильном решении капчи.
$solver->report($id, true); // captcha solved correctly
$solver->report($id, false); // captcha solved incorrectly
Обработка ошибок
Возможные варианты стандартных ошибок возвращаемые сервисом при обработке запросов
В случае ошибки решатель капчи выдает исключение. Важно правильно обращаться с этими случаями. Мы рекомендуем использовать try/catch
для обработки исключений
try {
$result = $solver->text('If tomorrow is Saturday, what day is today?');
} catch (\TwoCaptcha\Exception\ValidationException $e) {
// invalid parameters passed
} catch (\TwoCaptcha\Exception\NetworkException $e) {
// network error occurred
} catch (\TwoCaptcha\Exception\ApiException $e) {
// api respond with error
} catch (\TwoCaptcha\Exception\TimeoutException $e) {
// captcha is not solved so far
}