@matthewstafford

Как прикрутить модуль антикапчи к vk_api?

Имеется к примеру вот такой вот код

import random
import requests
import vk_api

token = 'TOKEN'  # Токен пользователя
delay = '5' # Задержка в секундах

vk_session = vk_api.VkApi(token=token)

from vk_api.longpoll import VkLongPoll, VkEventType
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:		
        if 'Привет:' in event.text:
            time.sleep(int(delay))
            if event.from_user:
                    vk.messages.send(
                        user_id = event.user_id,
                        random_id = random.randint(111111,999999999),
                        message = 'Привет'
                    )


Каким образом можно получить капчу и решать ее с помощью антикапчи, после чего отправлять в ВК? Или как вообще это все надо реализовать?

###UPD:
Я немного изменил код

try:
	vk.messages.send(
		user_id = event.user_id,
		random_id = random.randint(111111,999999999),
		message = 'Привет'
	)
except vk_api.Captcha as e:
	print(e.url) #картинка с капчей
	print(e.sid) #sid капчи для отправки ответа


Если мне вылазит капча, то я получаю её sid и url. Каким образом я теперь могу отправить её в антикапчу, получить решение и отправить в ВК?
  • Вопрос задан
  • 3806 просмотров
Решения вопроса 1
total4c
@total4c
Говнокодер
В коде, который представлен ниже, использован сервис: https://anti-captcha.com/
Вам нужно там зарегистрироваться, получить token от API и ввести его в поле, где он запрошен.

import vk_api, python3_anticaptcha
from python3_anticaptcha import ImageToTextTask, errors

def captcha_handler(captcha):
    key = ImageToTextTask.ImageToTextTask(anticaptcha_key=ваш api ключ, save_format='const') \
            .captcha_handler(captcha_link=captcha.get_url())

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

При авторизации аккаунта в вк, вам нужно добавить атрибут captcha_handler:
vk_session = vk_api.VkApi(token=token, captcha_handler=captcha_hander)


Сервис является платным, но того стоит
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
>>
могу отправить её в антикапчу, получить решение

какой именно сервис ? у него есть API

отправить в ВК

повторить запрос указав captcha_key captcha_sid
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы