phobious
@phobious
Не отрицаю свою глупость, и нет, мне не стыдно

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

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

raise captcha vk_api.exceptions.Captcha: Captcha needed

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

есть у кого ссылка, на конкретный пример реализации ввода капчи ботом?
  • Вопрос задан
  • 1224 просмотра
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект