Skip to content

Commit 0f2c77e

Browse files
committed
Login Captcha with redirect_uri
1 parent 738d66d commit 0f2c77e

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

vk_api/exceptions.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def __str__(self):
108108

109109
class Captcha(VkApiError):
110110

111-
def __init__(self, vk, captcha_sid, func, args=None, kwargs=None, url=None):
111+
def __init__(self, vk, captcha_sid, func, args=None, kwargs=None, url=None, redirect_uri=None):
112112
super(Captcha, self).__init__()
113113

114114
self.vk = vk
@@ -121,6 +121,7 @@ def __init__(self, vk, captcha_sid, func, args=None, kwargs=None, url=None):
121121

122122
self.key = None
123123
self.url = url
124+
self.redirect_uri = redirect_uri
124125
self.image = None
125126

126127
def get_url(self):
@@ -139,10 +140,11 @@ def get_image(self):
139140

140141
return self.image
141142

142-
def try_again(self, key=None):
143+
def try_again(self, key=None, success_token=None):
143144
""" Отправить запрос заново с ответом капчи
144145
145146
:param key: ответ капчи
147+
:param success_token: токен капчи с redirect_uri
146148
"""
147149

148150
if key:
@@ -152,6 +154,10 @@ def try_again(self, key=None):
152154
'captcha_sid': self.sid,
153155
'captcha_key': self.key
154156
})
157+
if success_token:
158+
self.kwargs.update({
159+
'success_token': success_token,
160+
})
155161

156162
return self.func(*self.args, **self.kwargs)
157163

vk_api/vk_api.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,7 @@ def vk_login_method(
942942
headers: t.Optional[t.Dict[str, t.Any]] = None,
943943
captcha_sid: t.Optional[str] = None,
944944
captcha_key: t.Optional[str] = None,
945+
success_token: t.Optional[str] = None,
945946
) -> t.Dict[str, t.Any]:
946947
"""
947948
Вызов действия для https://login.vk.ru с обработкой капчи.
@@ -965,6 +966,9 @@ def vk_login_method(
965966
self.logger.info(f'Using captcha code: {captcha_sid}: {captcha_key}')
966967
values['captcha_sid'] = captcha_sid
967968
values['captcha_key'] = captcha_key
969+
if success_token:
970+
self.logger.info(f'Using captcha success_token: {success_token}')
971+
values['success_token'] = success_token
968972

969973
response = self.http.post(
970974
url=f'https://login.vk.ru/?act={action}',
@@ -981,6 +985,7 @@ def vk_login_method(
981985
vk=self,
982986
captcha_sid=response_dict['captcha_sid'],
983987
url=response_dict['captcha_img'],
988+
redirect_uri=response_dict.get('redirect_uri'),
984989
func=self.vk_login_method,
985990
kwargs={
986991
'action': action,

0 commit comments

Comments
 (0)