python273 / vk_api

Модуль для создания скриптов для ВКонтакте | vk.com API wrapper
https://pypi.org/project/vk-api/
Apache License 2.0
1.33k stars 324 forks source link

Проблема с двухфакторной авторизацией и ReCaptcha #475

Closed PrincessLunaOfficial closed 2 years ago

PrincessLunaOfficial commented 2 years ago

При выполнении метода try_again в captcha_handler происходит ошибка try_again return self.func(*self.args, **self.kwargs) TypeError: 'str' object is not callable

# -*- coding: utf-8 -*-
import time
import vk_api

def auth_handler():
    """ При двухфакторной аутентификации вызывается эта функция.
    """

    # Код двухфакторной аутентификации
    key = input("Enter authentication code: ")
    # Если: True - сохранить, False - не сохранять.
    remember_device = True

    return key, remember_device

def captcha_handler(captcha):
    """ При возникновении капчи вызывается эта функция и ей передается объект
        капчи. Через метод get_url можно получить ссылку на изображение.
        Через метод try_again можно попытаться отправить запрос с кодом капчи
    """

    key = input("Enter captcha code {0}: ".format(captcha.get_url())).strip()

    # Пробуем снова отправить запрос с капчей
    return captcha.try_again(key)

def main():
    """ Пример обработки двухфакторной аутентификации """

    login, password = 'логин', 'пароль'
    vk_session = vk_api.VkApi(
        login, password,
        # функция для обработки капчи
        captcha_handler=captcha_handler,
        auth_handler=auth_handler
    )
    try:
        vk_session.auth()
        print('авторизация успешна')
    except vk_api.exceptions.TwoFactorError as error_msg:
    print('ошибка капчи')
        captcha_sid = str(int(time.time()))
        captcha = vk_api.Captcha(vk_session, captcha_sid, vk_session.login)
        vk_session.error_handlers[vk_api.CAPTCHA_ERROR_CODE](captcha)
    except vk_api.AuthError as error_msg:
        print(error_msg)

if __name__ == '__main__':
    main()
python273 commented 2 years ago

TwoFactorError это двухфакторная аутентификация (код в смс или сообщения вк), самому создавать Captcha не нужно

Обработка рекапчи не поддерживается, если кто-то сделает норм - мержну

python273 commented 2 years ago

а не, TwoFactorError это сломанная двухфакторная аутентификация, вероятно из-за рекапчи

PrincessLunaOfficial commented 2 years ago

Есть ли способ вообще ввести рекапчу через апи, если вк её запрашивает после двухфакторной аутентификации?

python273 commented 2 years ago

Аутентификация не через апи выполняется. Если по логину и паролю аутентификация не нужна - может проще просто токен получить руками и его передавать в VkApi

PrincessLunaOfficial commented 2 years ago

Разве сейчас возможно получить токен с правами на отправку сообщений от юзера?

python273 commented 2 years ago

В чате тг можно спросить https://t.me/python273_vk_api, вроде можно