yandex-smartcaptcha-solver
v2.0.0
Published
Automatic Yandex SmartCaptcha solver using XEvil OCR service
Maintainers
Readme
yandex-smartcaptcha-solver
Автоматическое решение Yandex SmartCaptcha через OCR-сервис XEvil.
Установка
npm install yandex-smartcaptcha-solverТребования
- Node.js >= 14.0.0
- Запущенный экземпляр XEvil с доступным HTTP API
Быстрый старт
const YandexSmartCaptchaSolver = require('yandex-smartcaptcha-solver');
const solver = new YandexSmartCaptchaSolver(
{
xevilUrl: 'http://127.0.0.1:80',
xevilApiKey: 'YOUR_API_KEY',
siteUrl: 'https://example.com/page-with-captcha',
siteKey: 'YOUR_SITE_KEY',
},
{
debug: true,
}
);
const result = await solver.solve();
console.log(result.token); // dD0x...Конфигурация
Обязательные параметры (config)
| Параметр | Тип | Описание |
|---|---|---|
| xevilUrl | string | URL XEvil сервера. Например: http://127.0.0.1:80 |
| xevilApiKey | string | API ключ для XEvil |
| siteUrl | string | Полный URL страницы с капчей |
| siteKey | string | Site key Yandex SmartCaptcha |
| coreName | string | (опционально) Имя ядра XEvil |
Дополнительные опции (options)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| userAgent | string | Chrome 120 UA | User-Agent браузера |
| debug | boolean | false | Подробное логирование |
| saveImages | boolean | false | Сохранять изображения капч на диск |
| imagesDir | string | ./captcha_images | Папка для сохранения изображений |
| humanDelayMin | number | 2000 | Минимальная задержка перед отправкой ответа (мс) |
| humanDelayMax | number | 4000 | Максимальная задержка перед отправкой ответа (мс) |
| timeout | number | 45000 | Таймаут HTTP запросов (мс) |
| maxRetries | number | 3 | Повторы при сетевых ошибках |
| retryDelay | number | 2000 | Задержка между повторами (мс) |
| proxyMaxAttempts | number | 5 | Повторы при недоступности прокси |
| proxyRetryDelay | number | 5000 | Задержка между попытками прокси (мс) |
API
solve(proxy?)
Решает капчу. Возвращает { status: 'ok', token: string }.
// Без прокси
const result = await solver.solve();
// С SOCKS5 прокси
const result = await solver.solve({
host: '127.0.0.1',
port: 1080,
username: 'user', // опционально
password: 'pass', // опционально
});
console.log(result.token); // передаётся на сайт как spravka-токенsolveWithRetry(maxAttempts?, retryDelay?, proxy?)
Решает капчу с автоматическими повторными попытками при неудаче.
| Параметр | По умолчанию | Описание |
|---|---|---|
| maxAttempts | 3 | Максимальное количество попыток |
| retryDelay | 3000 | Задержка между попытками (мс) |
| proxy | null | Настройки SOCKS5 прокси |
const result = await solver.solveWithRetry(5, 4000, {
host: '127.0.0.1',
port: 1080,
});Примеры
Базовое использование
const YandexSmartCaptchaSolver = require('yandex-smartcaptcha-solver');
async function main() {
const solver = new YandexSmartCaptchaSolver({
xevilUrl: 'http://127.0.0.1:80',
xevilApiKey: 'YOUR_API_KEY',
siteUrl: 'https://example.com',
siteKey: 'FEXfAbHQsToo97VidNVk3j4dqp-GuAbDp-amaEHNKMg=',
});
try {
const result = await solver.solveWithRetry(3);
console.log('Token:', result.token);
// Используйте token в запросе к сайту
} catch (err) {
console.error('Не удалось решить капчу:', err.message);
}
}
main();С прокси и сохранением изображений
const solver = new YandexSmartCaptchaSolver(
{
xevilUrl: 'http://127.0.0.1:80',
xevilApiKey: 'YOUR_API_KEY',
siteUrl: 'https://example.com',
siteKey: 'YOUR_SITE_KEY',
},
{
debug: true,
saveImages: true,
imagesDir: './captcha_images',
}
);
const proxy = { host: '127.0.0.1', port: 1080 };
const result = await solver.solve(proxy);Как это работает
- Отправляется первый запрос к
smartcaptcha.yandexcloud.netдля получения ключа капчи - Отправляется второй запрос — получаем URL изображения с символами
- Изображение скачивается и отправляется в XEvil для OCR-распознавания
- Распознанный текст кодируется и отправляется обратно в Yandex
- При успехе возвращается
spravka-токен для передачи на целевой сайт
Лицензия
MIT © SH3EL1T
