Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2018 07:59:22

almax
Зарегистрирован: 2018-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!

К примеру возьмем код для отправки постов на стену:

 import vk_api
import time
vk = vk_api.VkApi(login = '*********', password = '******')        #Авторизуемся на сайте.
vk.auth()
auth_test=vk.method('users.get',{'users_ids':'0'})         #Выводим список информации об авторизованном пользователе,
a=auth_test[0]
a_id=a['id']
a_last_name=a['last_name']
a_first_name=a['first_name']
print(a_first_name, a_last_name,'id:',a_id)
for x in range(20):
    vk.method('wall.post', {'owner_id': '499187139', 'message':x,'attachments': 'photo138362473_456239574%2Fphotos138362473'})
После отправки определенного количества постов возникает исключение:
 Traceback (most recent call last):
  File "C:\Program Files\Python37-32\A.py", line 16, in <module>
    vk.method('wall.post', {'owner_id': '499187139', 'message':x,'attachments': 'photo138362473_456239574%2Fphotos138362473'})
  File "C:\Program Files\Python37-32\lib\site-packages\vk_api\vk_api.py", line 610, in method
    response = self.error_handlers[error.code](error)
  File "C:\Program Files\Python37-32\lib\site-packages\vk_api\vk_api.py", line 492, in captcha_handler
    raise captcha
vk_api.exceptions.Captcha: Captcha needed

Подскажите, как обработать это исключение? Если речь идет о капче, то где взять ссылку на картинку?

Офлайн

#2 Дек. 6, 2018 09:30:27

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!

almax вы удивитесь но https://vk.com/dev/captcha_error

Если какое-либо действие (например, отправка сообщения) выполняется пользователем слишком часто, то запрос к API может возвращать ошибку “Captcha needed”. При этом пользователю понадобится ввести код с изображения и отправить запрос повторно с передачей введенного кода Captcha в параметрах запроса.
….
Если возникает данная ошибка, то в сообщении об ошибке передаются также следующие параметры:

captcha_sid - идентификатор captcha
captcha_img - ссылка на изображение, которое нужно показать пользователю, чтобы он ввел текст с этого изображения.
пример обработки капчи
https://github.com/python273/vk_api/blob/master/examples/captcha_handle.py

almax
Подскажите, как обработать это исключение?
Также как и все остальные исключения
 try:
   бла-бла-бла
except vk_api.exceptions.Captcha:
   бла-бла-бла че там на капче? может лучше поставить задержку между отправкой сообщений?
   



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 6, 2018 09:59:45)

Офлайн

#3 Дек. 6, 2018 12:17:34

almax
Зарегистрирован: 2018-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!

Да как не допустить исключение, это отдельный вопрос, все же интересно, как получить ссылку на капчу. В тексте исключения нет.

PEHDOM
Да как не допустить исключение, это отдельный вопрос, все же интересно, как получить ссылку на капчу. В тексте исключения нет.
Да как не допустить исключение, это отдельный вопрос, все же интересно, как получить ссылку на капчу. В тексте сообщения об исключении вроде нет.

Traceback (most recent call last):
File “C:\Program Files\Python37-32\A.py”, line 16, in <module>
vk.method('wall.post', {'owner_id': ‘499187139’, ‘message’:x,'attachments': ‘photo138362473_456239574%2Fphotos138362473’})
File “C:\Program Files\Python37-32\lib\site-packages\vk_api\vk_api.py”, line 610, in method
response = self.error_handlers(error)
File “C:\Program Files\Python37-32\lib\site-packages\vk_api\vk_api.py”, line 492, in captcha_handler
raise captcha
vk_api.exceptions.Captcha: Captcha needed

Офлайн

#4 Дек. 6, 2018 14:20:50

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!

almax
все же интересно, как получить ссылку на капчу. В тексте исключения нет.
1. попробуйте как на примере с гитхаба, там вроде все прозрачно, хотя я так и не понял, там каллбек функция для обработки капчи передаеться только для капчи при логине или вообще для всей сессии..
2, функция vk.method() должна возвращать чтото, вот и посмотрите что она возвращает. там должно быть сылка на капчу и сид, если верить исходникам
 ........
            if error.code in self.error_handlers:
                if error.code == CAPTCHA_ERROR_CODE:
                    error = Captcha(
                        self,
                        error.error['captcha_sid'],
                        self.method,
                        (method,),
                        {'values': values, 'raw': raw},
                        error.error['captcha_img']
                    )
                response = self.error_handlers[error.code](error)
                if response is not None:
                    return response



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 6, 2018 14:46:29)

Офлайн

#5 Дек. 6, 2018 18:05:29

almax
Зарегистрирован: 2018-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!


PEHDOM
Скажите, что это за код и как его приспособить к моему коду?

……..
if error.code in self.error_handlers:
if error.code == CAPTCHA_ERROR_CODE:
error = Captcha(
self,
error.error,
self.method,
(method,),
{'values': values, ‘raw’: raw},
error.error
)
response = self.error_handlers(error)
if response is not None:
return response

Я не волшебник и только учусь! Добавьте пожалуйста комментарии к коду.

Офлайн

#6 Дек. 6, 2018 20:57:42

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как получить ссылку на картину с капчей в вк?!

almax
Скажите, что это за код и как его приспособить к моему коду?
никак, это кусок кода из vk_api по которому видно что в случае CAPTCHA_ERROR_CODE к результату работы функции добавляеться капча и ее сид и все это возвращаеться. Поэтому посмотрите конкретно что она вам возвращает. Тоесть не в тупую вызывать vk.method(бла-бла-бла) и сливать результат вызова в NULL, а записывать редультат в переменную, и из нее вытягивать все что вам нужно.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version