phobious
@phobious
Если бы я хотел пить, я бы читал документации

Как ввести капчу через бота на Python?

пишу бота для вк на питоне, авторизовался через аккаунт(через пользователя грубо говоря) возникла проблема, когда бот отправляет много сообщений, мне выдает ошибку, конкретно :

raise captcha vk_api.exceptions.Captcha: Captcha needed

так вот, поискал что-то в самих документациях от вк, но ничего не нашел

есть у кого ссылка, на конкретный пример реализации ввода капчи ботом?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix
yellow
https://vk.com/dev/captcha_error

Если возникает данная ошибка, то в сообщении об ошибке передаются также следующие параметры:
captcha_sid - идентификатор captcha
captcha_img - ссылка на изображение, которое нужно показать пользователю, чтобы он ввел текст с этого изображения.

В этом случае следует запросить пользователя ввести текст с изображения captcha_img и повторить запрос, добавив в него параметры:
captcha_sid - полученный идентификатор
captcha_key - текст, который ввел пользователь
Ответ написан
ZIK1337
@ZIK1337
Если у вас работа с апи (т.е. капча обычная текстовая), то типо такого:
Библиотека есть base64, она сама преобразует картинку в base64 (в ответе будет ссылка на капчу)
отправка на рукапчу:
image = base64.encodebytes(res.content)
url = 'https://rucaptcha.com/in.php'
params = dict(key=rucaptcha, method='base64', body=image, json=1)
res = requests.post(url, params)

чек ответа:
url = 'https://rucaptcha.com/res.php'
params = dict(key=rucaptcha, action='get', id=res.json()['request'], json=1)
            while True:
                sleep(3) 
                res = requests.get(url, params)
                if int(res.json()['status']) == 1:
                    # тут делать, что нужно, т.е. повторно отправлять запрос с решенной капчей
                    # решенная капча в res.json()['request']
                    url = 'https://api.vk.com/method/wall.post'
                    params = dict(v=5.124, access_token=API_KEY, message='123',
                                  captcha_sid=capthca_sid, captcha_key=res.json()['request'])
                    res = requests.get(url, params=params)
                    break
                elif res.json() == 'CAPCHA_NOT_READY':
                    continue
                else:
                    print('ERROR')
                    print(res.json())
                    break
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы