Опыт программиста || боты ВКонтакте.
Слышали про токены сессии? Кусок текста лежащий в cookie для сайта вк. Насколько я помню, у вк 3 типа токенов. 1. Пользователь 2. Сообщество 3. VK mini apps, но я точно не знаю, я с этим не работал.
Где получать токен сообщества и токен vk mini apps написано публично на сайте vk dev. Как и токены пользователя. Но есть нюанс - легальный способ получения токена пользователя весьма сложен, да и с недавних пор сам вк может ограничивать доступы токенов для определенных приложений, у Kate mobile отрезали лайки, а tool 42… Да с ним много чего было, все уже и не перечислить.
Вобщем то, я упомяну, что есть способ получить токен пользователя в 2 счета, и сразу же вас огорчу. Есть сайт, который выдает токены в адресной строке посредством функции авторизации через вк. Для токена можно выбрать права и айди приложения. Но с недавних пор, длительность жизни этих токенов стала крайне маленькой, и вообще вк перебанил все токены полученные через большинство приложений.
Что делать если мы хотим долгоживущий токен? Мы автоматизируем получение токенов. Забудьте про тот сайт, теперь нам нужен перехватчик пакетов внутри браузера. Перехватывание пакетов называется интерцепцией, и я для этого использую http toolkit.
С помощью него я вытаскиваю из cookie пару переменных и пару других заголовков. ‘Origin’: ‘https://vk.com’ ‘User-Agent’: ‘ваш-юзер-агент-браузера’ ‘Cookie’: ‘p=ваш-куки-p; remixsid=ваш-куки-remixsid’ Content-Type’:‘application/x-www-form-urlencoded’
Тело запроса: ‘version=1&app_id=6287487’
И отправляем этот пакет на login.vk.com/?act=web_token В ответе мы получаем токен пользователя с продолжительностью жизни 5 минут (я не считал), но полностью рабочий и с полным функционалом.
Параллельно с тем, как я узнал как получать токен пользователя, я узнал, что сам сайт вк обновляет токен лишь когда клиент получает ошибку просроченного токена.
А вообще, не программируйте ботов ВК, оно вам нафиг не надо. ВК закрывает публичный API, ограничивает права токена сообщества и мини приложения. Можете предлагать свои темы, я их разберу.