vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

Бан аккаунта

Open Nikita2305 opened this issue 4 years ago • 21 comments

Изначально аккаунт не заблокирован.

После авторизации, а затем отправки первого запроса получаю ошибку: [5] User authorization failed: user is blocked.

Затем оказывается, что аккаунт заблокирован. Аккаунт можно восстановить, но не более 2 раз, затем следует более длительный бан, но не перманентный.

Ошибка возникает при отправке запроса с конкретного ПК, с которого ранее(несколько дней назад) было осуществлено много запросов к API. На другом ПК ошибка не воспроизвелась (информация от товарища). Что может быть причиной?

P.S. выдача бана не зависит от vk_config и аккаунта. Код который работал раньше - перестал работать по этой причине.

P.P.S. Повторил сценарий на третьем ПК, с абсолютно новым аккаунтом ВК, под другим способом подключения к интернету. Вновь получил бан.

Окружение

vk_api: 11.9.6

Пример

vk_session = vk_api.VkApi(login="login", password="password")
vk_session.auth()
vk = vk_session.get_api()

link = input()
link = link.split('/')[-1]
vk.users.get(user_ids=link)

Nikita2305 avatar Nov 18 '21 07:11 Nikita2305

Не уверен в чем именно причина, другие люди тоже писали о блокировках.

Если нужна аутентификация по логину и паролю, то попробуйте создать свое приложение и передавать в app_id. Если не нужна, то руками получить токен и передавать в token.

python273 avatar Nov 18 '21 09:11 python273

По результатам экспериментов (20 пожженых аккаунтов): Банилка реагирует на флоу авторизации (на что конкретно - не знаю). Либо сразу блочит, либо пропускает и блочит через несколько минут.

Точно не помогает:

  • смена appid (свои/чужие/новые/старые)
  • смена IP

Если юзать токен полученный легальным путем и не трогать auth, то все работает (в том числе с скомпрометированных многочисленными банами ip)

sadspirit avatar Nov 18 '21 12:11 sadspirit

Можно еще попробовать ставить другой юзерагент

например

vk_session.http.headers['User-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0'

python273 avatar Nov 18 '21 13:11 python273

Да, юзер агент тоже не помогает. Пробовал разные варианты. Также менял версию API. Выставлял задержку между запросами в секунду. Особенности блокировки:

  • Блокировка: Подозрительная активность.
  • Токен получает нормально, и уже на 1-10 запросе блочит.
  • Блок прилетает на методы group/wall. К примеру на перечисление городов (список стран/городов) - не трогает

Учитывая, вышеперечисленное, думаю аккаунт попадает в подозрительные, после прохождения flow авторизации. Может не хватает какого параметра при эмуляции входа или js чек какой-нибудь вставили (не рисерчил).

sadspirit avatar Nov 18 '21 14:11 sadspirit

@sadspirit

Если юзать токен полученный легальным путем

Прошу прощения, можете раскрыть тему про "легальный путь" — как получить такой токен?

Имеется ввиду создание приложения и получение токена через него?

zt50tz avatar Nov 18 '21 14:11 zt50tz

Аналогичная проблема - блокнули страницу 2 раза подряд. Рецепт: залогиниться и выполнить users.get. Запрос выполняют и блочат страницу. Вычисляют ботов?

UPD: пока альтернативный способ - использовать токен, к примеру от VK Admin.

Ne0shka avatar Nov 18 '21 15:11 Ne0shka

@sadspirit

Если юзать токен полученный легальным путем

Прошу прощения, можете раскрыть тему про "легальный путь" — как получить такой токен?

Имеется ввиду создание приложения и получение токена через него?

https://vk.com/dev/first_guide

DmitryZoloto avatar Nov 18 '21 17:11 DmitryZoloto

Подтвержаю, с позавчерашнего дня стали банить. ПС всегда подключался с использованием своего ID приложения.

r35p3ct avatar Nov 19 '21 08:11 r35p3ct

Друзья, если найдете решение данной проблемы - отпишите пожалуйста сюда.

yinelos avatar Nov 19 '21 10:11 yinelos

Дня 3 назад улетел первый парсер у меня, окей, вставляю другой аккаунт, вчера ночью замечаю, что он в бане, разбаниваю, потом смотрю, что он отлетел вновь сразу после авторизации. Тоже буду копать в чем дело, видимо они решили жестко вставить палки в колеса ботоводам.

l1zt0p avatar Nov 19 '21 10:11 l1zt0p

Друзья, если найдете решение данной проблемы - отпишите пожалуйста сюда.

Получил токен через https://oauth.vk.com/authorize?client_id=приложение&display=page&redirect_uri=https://oauth.vk.com/blank.html&response_type=token &scope=wall,offline ручками и передал его: vk_session = vk_api.VkApi(token=acc_token)

еще добавил, на всякий случай: vk_session.http.headers[ 'User-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0'

r35p3ct avatar Nov 19 '21 11:11 r35p3ct

А получить remixsid возможно только через авторизацию по логину?

dashedman avatar Nov 19 '21 15:11 dashedman

Получил токен через https://oauth.vk.com/authorize?client_id=приложение&display=page&redirect_uri=https://oauth.vk.com/blank.html&response_type=token &scope=wall,offline ручками и передал его: vk_session = vk_api.VkApi(token=acc_token)

еще добавил, на всякий случай: vk_session.http.headers[ 'User-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0'

Попробовал выше описанные примеры - либо бан либо требует 'Login is required to auth' изображение

rasperepodvipodvert avatar Nov 19 '21 20:11 rasperepodvipodvert

При реверсе их официального приложения ВК было выявлено, что можно авторизовываться через bearer, подставляя токен в значение заголовка. Брал токены от разных приложений (kate, vk admin etc) и работает. (Брал руками токен, на баны не проверял, проверьте и отпишитесь)

Программно токен не пробовал получать, но закину сюда идею, может быть кто нибудь исследует проблему и сможет её решить.

from requests import Session
import vk_api

user_agent = {"User-Agent": "VKShitApp/6.9.1-5828 (Android 14.8.8; SDK 26; armeabi-v7a; foobar ShitVkOS; ru; 800x640)"}

token = "my_secret_token"
session = Session()
session.headers.update(user_agent)
session.headers.update({"Authorization": f"Bearer {token}"})

vk_session = vk_api.VkApi(session=session, api_version="5.181")
vk_api_session = vk_session.get_api()
print(vk_api_session.account.getInfo())

vypivshiy avatar Nov 20 '21 10:11 vypivshiy

За метод выше блокировка по подозрительной попытке авторизации сразу. Попробую поковыряться сейчас, сделать чуть другой метод.

l1zt0p avatar Nov 20 '21 14:11 l1zt0p

Удалось починить вот таким методом, с предварительным удалением vk_config.v2.json

vk_session = vk_api.VkApi(
            login=settings.VK_LOGIN,
            password=settings.VK_PASSWORD,
        )
        try:
            vk_session.http.headers['User-agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:94.0) Gecko/20100101 Firefox/94.0'
            vk_session.auth(token_only=True)
        except vk_api.AuthError as error_msg:
            print(error_msg)
            return error_msg

rasperepodvipodvert avatar Nov 21 '21 12:11 rasperepodvipodvert

Удалось починить вот таким методом, с предварительным удалением vk_config.v2.json

vk_session = vk_api.VkApi(
            login=settings.VK_LOGIN,
            password=settings.VK_PASSWORD,
        )
        try:
            vk_session.http.headers['User-agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:94.0) Gecko/20100101 Firefox/94.0'
            vk_session.auth(token_only=True)
        except vk_api.AuthError as error_msg:
            print(error_msg)
            return error_msg

а без token_only=True не работает?

dashedman avatar Nov 21 '21 19:11 dashedman

Может быть связано с #437

MrTransistorsChannel avatar Nov 23 '21 19:11 MrTransistorsChannel

В моём случае сработало так:

vk_session = vk_api.VkApi(login, password)
vk_session.http.headers['User-agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:94.0) Gecko/20100101 Firefox/94.0'
vk_session.auth()

Не уверен, может быть, дело было в аккаунтах.

vk_api: 11.9.6

salykin avatar Nov 24 '21 08:11 salykin

Здравствуйте, может быть вам поможет аутификация с токеном? Я вот просто сколько уже сижу - ни разу не банили.

import vk_api
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
from vk_api.longpoll import VkLongPoll, VkEventType
banlist = [000000000,000000000] # тут писать id-шники тех кого хочешь удалять сообщения 
def auth_handler():
    key = input("Введите код для двухфакторной аутификации: ")
    remember_device = True
    return key, remember_device
def main():                       
    login, password = '+78005553535','password'
    vk_session = vk_api.VkApi(
        login, password, token="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234", app_id="2685278",
        auth_handler=auth_handler
    )
    try:
        vk_session.auth()
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return

    longpoll = VkLongPoll(vk_session)
    vk = vk_session.get_api()
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            print('New message:')
            if event.from_user or event.from_chat:
                if event.user_id in banlist:
                    vk.messages.delete(message_ids=event.message_id, peer_id=event.peer_id)
                if event.from_chat:
                    print(event.user_id, 'in chat', event.chat_id)
                elif event.from_user:
                    print('from user:', event.user_id)
            print('Text: ', event.text)
            print()


if __name__ == '__main__':
    main()

Токен получить можно тут. В примере указан app_id для kate mobile

AsmanovLev avatar Feb 18 '22 08:02 AsmanovLev

Здравствуйте, может быть вам поможет аутификация с токеном? Я вот просто сколько уже сижу - ни разу не банили.

Большое человеческое СПАСИБО! Наконец-то получилось пофиксить вход для проблемных аккаунтов, над которой бился несколько суток.

mewforest avatar Aug 04 '23 14:08 mewforest