Капча Редактировано: 28.08.2020 в 04:16
Насущная проблема для программистов, которые пишут что либо под ВК - это капча. В EasyVK нету готовых решений для решения капчи, но есть удобные инструменты для ловли этой ошибки, для дальнейшего решения каким либо удобным способом.
captchaHandler
Это и есть тот самый инструмент. captchaHandler - это один из параметров инициализации EasyVK, который появился в версии 1.1, и существует с того момента в следующем виде:
let captchaHandler
captchaHandler = ({captcha_sid, captcha_img, resolve:solve, vk}) => {
console.log(`Ohh.... captcha, need solve this captcha (${captcha_img})`)
}
easyvk({
captchaHandler: captchaHandler
})
Когда возникает ошибка капчи, EasyVK вызывает эту функцию, передавая в нее такой объект:
{
captcha_sid: ...,
captcha_img: ...,
resolve: callbackFunction () ....,
vk: EasyVK
}
Функция resolve - это функция, вызывая которую вы пытетесь решить капчу. То есть, если вы знаете код, необходимо вызвать эту функцию, передав в нее ответ капчи. Ниже приведен более полный пример использования captchaHandler'а
const readline = require('readline')
const easyvk = require('easyvk')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const captchaHandler = ({captcha_sid, captcha_img, resolve:solve, vk}) => {
rl.question(`Введите капчу для картинки ${captcha_img} `, (key) => {
//Когда вводится капча в консоль, пробуем решить капчу
solve(key).then(() => {
console.log('Капча решена корректно!')
}).catch(({err, reCall: tryNewCall}) => {
//Иначе капча не решена, стоит попробовать снова
console.log('Капче не решена!!!\nПробуем занова')
tryNewCall() //Пробуем снова, занова запускаем наш captchaHandler, по факту...
//Не стоит самостоятельно перезапускать функцию captchaHandler, так как в EasyVK
//для этого имеется функция reCall, которая точно запустит все как нужно
})
})
}
easyvk({
captchaHandlder: captchaHandler
}).then(vk => {
// пример: vk.call('messages.send', ...)
}).catch(console.error)
Таким образом вы можете ловить все ошибки капчи, решать их, и если есть нужда, останавливать все процессы, до тех пор, пока капча не будет решена, чтобы ваш аккаунт не заморозили за подозрительную активность.
Рекомендую пройти к следующему разделу документации, чтобы ознакомиться со всеми возможностями EasyVK - Методы.