vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

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

Open Fogapod opened this issue 7 years ago • 17 comments

Очень много раз авторизовывался сегодня через api и перестала проходить двухфакторная авторизация Two factor authentication failed. Начал разбираться, в чём проблема. Переменная response_parsed в функции twofactor имеет значение [u'<!--3616759404134', u'', u'0', u'6837', u'2', u'6le00b8taaaaachiybbhy8tmoijhm5vh88jvtp4c', u'2', u'ru'], где response_parsed[4] == u'2 '. Не перехватывается здесь и здесь, что вызывает ошибку. Двойка приходит что при правильном коде, что при неправильном. При авторизации через сайт вылезает ReCaptcha. Я правильно понял, что именно она является причиной провала авторизации? Если да, как её обойти? Заранее спасибо

Fogapod avatar Aug 29 '17 18:08 Fogapod

Я правильно понял, что именно она является причиной провала авторизации?

Да

Попробуй добавить обработчик капчи и запустить

import time

...

captcha_sid = str(int(time.time()))
captcha = vk_api.Captcha(vk_session, captcha_sid, vk_session.vk_login)
vk_session.error_handlers[vk_api.CAPTCHA_ERROR_CODE](captcha)

вместо vk_session.auth()

python273 avatar Aug 29 '17 18:08 python273

Ввожу логин и пароль Вызывается captcha_handler -> ввожу капчу Вызывается auth_handler -> ввожу код Та же ошибка, то же содержимое response_parsed ([u'<!--3616759404134', u'', u'0', u'6837', u'2', u'6le00b8taaaaachiybbhy8tmoijhm5vh88jvtp4c', u'2', u'ru'])

Всё перепроверил несколько раз

Fogapod avatar Aug 29 '17 18:08 Fogapod

хм, тогда не уверен как фиксить. Интересно можно ли как-то обычную капчу вызывать, вместо рекапчи

python273 avatar Aug 29 '17 18:08 python273

Добрый день! У меня похожая ситуация, перестало обрабатывать капчу, обработчик капчи есть и раньше работал, вот ошибка:

Error
Traceback (most recent call last):
  File "E:\Programs\python_3_54_x32\Lib\unittest\case.py", line 59, in testPartExecutor
    yield
  File "E:\Programs\python_3_54_x32\Lib\unittest\case.py", line 605, in run
    testMethod()
  File "E:\Programs\python_3_54_x32\Lib\unittest\mock.py", line 1159, in patched
    return func(*args, **keywargs)
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\tests\test_vkontakte.py", line 26, in test_search
    output = self.vkontakte.search(query, session_key, 'Ukraine', 'Kiev')
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\models\model_vkontakte.py", line 114, in search
    self.api = self.get_api()
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\models\model_vkontakte.py", line 48, in get_api
    api.auth()
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\venv\lib\site-packages\vk_api\vk_api.py", line 158, in auth
    self._auth_cookies(reauth=reauth)
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\venv\lib\site-packages\vk_api\vk_api.py", line 180, in _auth_cookies
    self.vk_login()
  File "C:\Users\Vadim.Kuznetsov\PycharmProjects\st\venv\lib\site-packages\vk_api\vk_api.py", line 283, in vk_login
    'Unknown error. Please send bugreport: https://vk.com/python273'
vk_api.exceptions.AuthError: Unknown error. Please send bugreport: https://vk.com/python273

Я проверил ответ ВК и увидел следующее:

<script type="text/javascript">
var _ua = navigator.userAgent;
var locDomain = 'vk.com'.match(/[a-zA-Z]+\.[a-zA-Z]+\.?$/)[0];
if (/opera/i.test(_ua) || !/msie 6/i.test(_ua) || document.domain != locDomain) {
  document.domain = locDomain;
}
parent.__qlClear();
addEvent = parent.addEvent;
vk = parent.vk;
parent.stManager.add(['notifier.js', 'notifier.css'], function() {
  Notifier = parent.Notifier;
  
  parent.onLoginReCaptcha('6Le00B8TAAAAACHiybbHy8tMOiJhM5vh88JVtP4c', 'en');
});
</script>

То есть, насколько я вижу ВК отвечает onLoginReCaptcha а не onLoginCaptcha, которую ищет vk-api

oceanlazy avatar Sep 06 '17 15:09 oceanlazy

@vadimk2016 обновитесь до ветки master. Исправлено здесь: https://github.com/python273/vk_api/commit/3a5f2a3bc32cf8430e80369490de56ba80e5b28d

Fogapod avatar Sep 06 '17 16:09 Fogapod

Спасибо. Насколько я понял в PIP пока нет этого обновления?

oceanlazy avatar Sep 07 '17 11:09 oceanlazy

Ага, нужно залить будет

python273 avatar Sep 07 '17 11:09 python273

Залил 9.1 https://github.com/python273/vk_api/releases/tag/v9.1

python273 avatar Sep 08 '17 04:09 python273

Как я понял, сейчас в captcha_handler не передается key и url для ReCaptcha (и её нельзя пройти)?

skar404 avatar Sep 12 '18 12:09 skar404

Нет, но можно попробовать добавить

python273 avatar Sep 12 '18 12:09 python273

Как это лучше реализовать, просто передача этих параметров поломает обратную совместимость, может запихнуть это в class Captcha?

skar404 avatar Sep 12 '18 13:09 skar404

Да, должно через исключение передаваться

python273 avatar Sep 12 '18 15:09 python273

Случилася похожая проблема, при частом логине с двухфакторкой программа падает:

Traceback (most recent call last):
  File "main.py", line 47, in <module>
    session.auth()
  File "venv/lib/python3.9/site-packages/vk_api/vk_api.py", line 180, in auth
    self._auth_cookies(reauth=reauth)
  File "venv/lib/python3.9/site-packages/vk_api/vk_api.py", line 200, in _auth_cookies
    self._vk_login()
  File "venv/lib/python3.9/site-packages/vk_api/vk_api.py", line 301, in _vk_login
    self._pass_twofactor(response)
  File "venv/lib/python3.9/site-packages/vk_api/vk_api.py", line 351, in _pass_twofactor
    raise TwoFactorError('Recaptcha required')
vk_api.exceptions.TwoFactorError: Recaptcha required

Process finished with exit code 1

cheloveg avatar Oct 18 '21 06:10 cheloveg

@cheloveg это может связано с тем что ReCaptcha неправильно распознала капчу, можно попробовать перейти на API token или добавить ретраи на месте авторизации.

skar404 avatar Oct 18 '21 07:10 skar404

@cheloveg , @python273 Добрый день, подскажите, как то решилось? Есть способ пройти капчу вручную или обойти её? Ибо эта капча не пропадает даже через сутки, не знаю, пропадёт ли вообще

Traceback (most recent call last):
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/main.py", line 94, in <module>
    main()
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/main.py", line 90, in main
    raise error_msg
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/main.py", line 53, in main
    vk_session.auth()
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/venv/lib/python3.8/site-packages/vk_api/vk_api.py", line 187, in auth
    self._auth_cookies(reauth=reauth)
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/venv/lib/python3.8/site-packages/vk_api/vk_api.py", line 207, in _auth_cookies
    self._vk_login()
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/venv/lib/python3.8/site-packages/vk_api/vk_api.py", line 330, in _vk_login
    self._pass_twofactor(response)
  File "/home/nkrutikov/PycharmProjects/vk_two_factors/venv/lib/python3.8/site-packages/vk_api/vk_api.py", line 380, in _pass_twofactor
    raise TwoFactorError('Recaptcha required')
vk_api.exceptions.TwoFactorError: Recaptcha required

krutik228 avatar Nov 27 '22 09:11 krutik228

Обработки рекапчи нет. Если вы только апи пользуетесь (без кукисов вк), то можно попробовать token_only=True передать в vk_session.auth(). Либо руками получить токен и передавать его в VkApi(token='...'), тогда вызывать auth не нужно будет

python273 avatar Nov 27 '22 12:11 python273

так и не решилось? придется отрубать двухфакторку?

XaRex1337 avatar Aug 14 '23 15:08 XaRex1337