vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

Запрет messages

Open Andreuno opened this issue 7 years ago • 34 comments

В связи с планируемыми событиями у ВК, в феврале, хочу задать соответствующий вопрос: Будут ли разработчики библиотеки бороться с этим? Как раньше боролись с методом audio...

    • https://vk.com/wall-1_389441

Andreuno avatar Jan 15 '19 17:01 Andreuno

У меня все меньше времени и желания этим заниматься, так что скорее всего не будет. В принципе это можно реализовать отедльным модулем и залить в pypi, так что делайте кому нужно. Не объязательно даже на vk_api завязываться, можно просто куки от vk_api брать или requests сессию

Ну и возможно это обходится использованием ключей от официальных приложений

python273 avatar Jan 17 '19 17:01 python273

У меня все меньше времени и желания этим заниматься, так что скорее всего не будет. В принципе это можно реализовать отедльным модулем и залить в pypi, так что делайте кому нужно. Не объязательно даже на vk_api завязываться, можно просто куки от vk_api брать или requests сессию

Ну и возможно это обходится использованием ключей от официальных приложений

Спасибо за ответ!) Релаьно годная либа, пользуесь только ей. Спасибо тебе за такое)

Andreuno avatar Feb 01 '19 14:02 Andreuno

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

TheDeaX-Lab avatar Mar 02 '19 08:03 TheDeaX-Lab

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

Он на питоне или на java? И в чем суть удобства с капчей, ну что ты придумал то-есть?)

Andreuno avatar Mar 02 '19 09:03 Andreuno

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

То есть, нельзя будет использовать API с selenium нормально без браузера? А как же сервера? На сколько я помню, selenium нормально только в связке с графическим браузером работает, не консольным.

steeldimon avatar Mar 02 '19 12:03 steeldimon

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

То есть, нельзя будет использовать API с selenium нормально без браузера? А как же сервера? На сколько я помню, selenium нормально только в связке с графическим браузером работает, не консольным.

Я посмотрел вариант использования requests, на сколько я понимаю, cookies и так есть в сессии, и через эту сессию работать с сообщениями через парсер типа beautifulsoup и post/get requests

steeldimon avatar Mar 02 '19 12:03 steeldimon

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

То есть, нельзя будет использовать API с selenium нормально без браузера? А как же сервера? На сколько я помню, selenium нормально только в связке с графическим браузером работает, не консольным.

Я посмотрел вариант использования requests, на сколько я понимаю, cookies и так есть в сессии, и через эту сессию работать с сообщениями через парсер типа beautifulsoup и post/get requests

В общем работать через lxml или beautyfulsoup можно прекрасно парсить сообщения, получать их и отправлять. Важный момент что requests сессию можно взять прямо из библиотеки (на практике не пробовал еще). Фактически можно реализовать метод messages через requests к web версии и обернуть их в привычную часть библиотеки в привычном виде. Если у кого есть время и желание сделать, будет супер. Дойдут руки постараюсь сделать сам.

steeldimon avatar Mar 04 '19 07:03 steeldimon

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

То есть, нельзя будет использовать API с selenium нормально без браузера? А как же сервера? На сколько я помню, selenium нормально только в связке с графическим браузером работает, не консольным.

Я посмотрел вариант использования requests, на сколько я понимаю, cookies и так есть в сессии, и через эту сессию работать с сообщениями через парсер типа beautifulsoup и post/get requests

В общем работать через lxml или beautyfulsoup можно прекрасно парсить сообщения, получать их и отправлять. Важный момент что requests сессию можно взять прямо из библиотеки (на практике не пробовал еще). Фактически можно реализовать метод messages через requests к web версии и обернуть их в привычную часть библиотеки в привычном виде. Если у кого есть время и желание сделать, будет супер. Дойдут руки постараюсь сделать сам.

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

xkord avatar Mar 07 '19 20:03 xkord

Пришло такое сообщение в лс от Администрации вк: "...Отметим, что приложениям, работающим с сообщениями пользователя с сервера, доступ выдан быть не может..."

Собственно вопрос, кто-нибудь знает это означает, что при получении токена пользователя (vk_token) через мобильное приложение и отправки этого токена на сервер и запуске на сервере примерно следующего кода:

vk_session = vk_api.VkApi(token=self.vk_token, app_id=self.app_id, 
                          client_secret=self.vk_client_secret)
self.vk = vk_session.get_api()

то такому приложению доступ к messages выдан не будет? Или я что-то не так понял..

xkord avatar Mar 07 '19 20:03 xkord

Скорее всего они имели в виду приложения, авторизация в которых проходит через implicit flow. В документаций кстати об этом написано.

Меня интересует вопрос обхода ограничений по использованию методов message. Сейчас ещё можно выполнять message.send юзеру через vk.com/dev. А вот если отсылать что-то в беседу то "Permission to perform this action is denied". Кто как обходит? Авторизация под офф. приложением? Пытался косить под Kate, но получил "Access denied: no access to call this method".

MrSmitix avatar Mar 08 '19 08:03 MrSmitix

Поправочка. Через vk.com/dev пока ещё работает. Но я думаю что не на долго. Возможно чуть позже залью код для обхода к себе.

MrSmitix avatar Mar 08 '19 08:03 MrSmitix

@MrSmitix, не советую проходить авторизацию с данными офф. приложений - техподдержка подтвердила, что за это скоро начнуть банить аккаунты. Тем не менее, при закосе под оф приложение под ведроид, методы сообщений работают.

hikiko4ern avatar Mar 08 '19 15:03 hikiko4ern

@hikiko4ern, не можешь подсказать app_id и app_secret для авторизации?

MrSmitix avatar Mar 08 '19 15:03 MrSmitix

@MrSmitix, *тык*

hikiko4ern avatar Mar 08 '19 15:03 hikiko4ern

Скорее всего они имели в виду приложения, авторизация в которых проходит через implicit flow. В документаций кстати об этом написано.

Меня интересует вопрос обхода ограничений по использованию методов message. Сейчас ещё можно выполнять message.send юзеру через vk.com/dev. А вот если отсылать что-то в беседу то "Permission to perform this action is denied". Кто как обходит? Авторизация под офф. приложением? Пытался косить под Kate, но получил "Access denied: no access to call this method".

Получается получение токена через Android SDK и работа с этим токеном на сервере - остается разрешенной фичей?

xkord avatar Mar 09 '19 10:03 xkord

https://github.com/python273/vk_api/issues/219#issuecomment-455252508 есть уязвимость данной системы. Смысл таков что кто прошёл модерацию, то даётся не токен который работает на одного человека, а разрешается app_id! Что мы в итоге имеем, забираем app_id у KateMobile и дело решено! Хз как у вас, но у меня всё отлично

TheDeaX-Lab avatar Mar 09 '19 20:03 TheDeaX-Lab

@Andreuno Короче, я создам у себя в репозитории обход messages, будет основан на selenium. Удобство этой штуки будет в том что каптча у вас будет простая нежели каждый раз текстово вводить

То есть, нельзя будет использовать API с selenium нормально без браузера? А как же сервера? На сколько я помню, selenium нормально только в связке с графическим браузером работает, не консольным.

Я посмотрел вариант использования requests, на сколько я понимаю, cookies и так есть в сессии, и через эту сессию работать с сообщениями через парсер типа beautifulsoup и post/get requests

В общем работать через lxml или beautyfulsoup можно прекрасно парсить сообщения, получать их и отправлять. Важный момент что requests сессию можно взять прямо из библиотеки (на практике не пробовал еще). Фактически можно реализовать метод messages через requests к web версии и обернуть их в привычную часть библиотеки в привычном виде. Если у кого есть время и желание сделать, будет супер. Дойдут руки постараюсь сделать сам.

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

Сейчас закончу основную часть бота с celery и прочими вещами, после отладки займусь сообщениями через requests

steeldimon avatar Mar 10 '19 10:03 steeldimon

#219 (comment) есть уязвимость данной системы. Смысл таков что кто прошёл модерацию, то даётся не токен который работает на одного человека, а разрешается app_id! Что мы в итоге имеем, забираем app_id у KateMobile и дело решено! Хз как у вас, но у меня всё отлично

Не совсем понятно, достаточно забрать только app_id? А CLIENT_SECRET брать какой и токен пользователя?

xkord avatar Mar 11 '19 15:03 xkord

@xkord, всегда можно декомплировать и посмотреть, как это делает приложение; токен через Implicit Flow получать.

...
public static String getUrl(String paramString1, String paramString2)
  {
    StringBuilder localStringBuilder = new StringBuilder();
    localStringBuilder.append("https://oauth.vk.com/authorize?client_id=");
    localStringBuilder.append(paramString1);
    localStringBuilder.append("&display=mobile&scope=");
    localStringBuilder.append(paramString2);
    localStringBuilder.append("&redirect_uri=");
    localStringBuilder.append(URLEncoder.encode(redirect_url));
    localStringBuilder.append("&response_type=token&v=");
    localStringBuilder.append(URLEncoder.encode("5.78"));
    return localStringBuilder.toString();
  }
...
...
String str = Auth.getUrl(KateConstants.API_ID, paramBundle);
...
...
public class KateConstants
{
  public static String API_ID = "2685278";
  public static String tmp = "hHbJug59sKJie78wjrH8";
}
...

hikiko4ern avatar Mar 11 '19 16:03 hikiko4ern

@xkord, всегда можно декомплировать и посмотреть, как это делает приложение; токен через Implicit Flow получать.

...
public static String getUrl(String paramString1, String paramString2)
  {
    StringBuilder localStringBuilder = new StringBuilder();
    localStringBuilder.append("https://oauth.vk.com/authorize?client_id=");
    localStringBuilder.append(paramString1);
    localStringBuilder.append("&display=mobile&scope=");
    localStringBuilder.append(paramString2);
    localStringBuilder.append("&redirect_uri=");
    localStringBuilder.append(URLEncoder.encode(redirect_url));
    localStringBuilder.append("&response_type=token&v=");
    localStringBuilder.append(URLEncoder.encode("5.78"));
    return localStringBuilder.toString();
  }
...
...
String str = Auth.getUrl(KateConstants.API_ID, paramBundle);
...
...
public class KateConstants
{
  public static String API_ID = "2685278";
  public static String tmp = "hHbJug59sKJie78wjrH8";
}
...

Спасибо, помогло! Интересно, как долго это будет работать. Пока разработчики Kate Mobile не перегенерят client_secret и не сделают нормальную защиту от декомпилирования...

Интересно, а можно как-то провернуть подобную схему через получение токена с помощью sdk?

xkord avatar Mar 11 '19 17:03 xkord

пока для доступа к сообщениям не сделают какую-нибудь хитрую систему, как для доступа к аудио

client_secret не используется при авторизации даже если и сделают какую-то защиту, app_id останется

Интересно, а можно как-то провернуть подобную схему через получение токена с помощью sdk?

какую "подобную схему"?

hikiko4ern avatar Mar 11 '19 18:03 hikiko4ern

пока для доступа к сообщениям не сделают какую-нибудь хитрую систему, как для доступа к аудио

client_secret не используется при авторизации даже если и сделают какую-то защиту, app_id останется

Интересно, а можно как-то провернуть подобную схему через получение токена с помощью sdk?

какую "подобную схему"?

У меня сервис устроен следующим образом, получаю токен пользователя через sdk, далее токен отправляю на сервер и работаю с messages с сервера:

vk_session = vk_api.VkApi(token=self.vk_token, app_id=self.app_id, 
                          client_secret=self.vk_client_secret)
self.vk = vk_session.get_api()

У меня есть CLIENT_SECRET и APP_ID от Kate Mobile, а токен через SDK я уже не смогу получить, только Implicit Flow. Вот я и подумал, может можно все таки как-то получить его через API SDK.

xkord avatar Mar 11 '19 19:03 xkord

Серьезно? У меня все прекрасно работает на Kate APP_ID... Странно

Andreuno avatar Mar 11 '19 19:03 Andreuno

и работаю с messages с сервера

@xkord, вроде где-то было написано, что теперь нельзя использовать апи сообщений с сервера - только клиентский.

hikiko4ern avatar Mar 12 '19 03:03 hikiko4ern

и работаю с messages с сервера

@xkord, вроде где-то было написано, что теперь нельзя использовать апи сообщений с сервера - только клиентский.

Если быть точнее, то "работал". В том то и дело, что теперь нельзя. Придется всю логику работы переносить на клиента. Потому что как я понял Implicit flow для браузера, а мне надо получить токен с помощью SDK для уже залогиненного пользователя в оффициальном приложении вк на телефоне.

xkord avatar Mar 12 '19 23:03 xkord

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

RSupreme10x avatar Sep 19 '19 07:09 RSupreme10x

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

group_join / https://vk.com/dev/groups_events

Noop1 avatar Nov 23 '19 14:11 Noop1

Hi, ещё актуальны CLIENT_SECRET и APP_ID от Kate Mobile? У выдает ошибку при попытки исользования message.get Если нет, то есть ли способы без модерации приложения получить доступ к сообщениям?

Neqit avatar Dec 05 '19 23:12 Neqit

@Neqit вообще должно быть актуально

TheDeaX-Lab avatar Dec 06 '19 05:12 TheDeaX-Lab

@TheDeaX-Lab Хмм.. А какие аргументы используются для vk_api.VkApi? токен, клиент_сикрет и апп_айди?

Neqit avatar Dec 06 '19 11:12 Neqit