VK.com предоставляет многофункциональный и удобный API, который позволяет делать всё, что приходит на ум программисту, и даже, немного больше. API позволяет отправлять сообщения, получать и публиковать записи на стену, производить абсолютно любые действия, которые существуют в VK, от имени пользователя, кому был сгенерирован токен. Разобравшись с API на примере ВК, в будущем, вы безпроблемно сможете быстро вникать в API любых других сайтов. И, ввиду того, что 90% всех API имеют схожую реализацию, то понимание этой статьи будет для вас отличным стартом, и хорошей школой освоения «взрослых игрушек».
В недавней статье было рассмотрено, что такое REST API. Почитайте информацию по ссылке — это точно будет полезно.
- Что такое VK API, разные группы API.
- Получение токена доступа
- Запросы к API (на примере получения всех записей пользователя со стены)
- Резюме
Зачем нужен токен Вконтакте
access_token – это специальный ключ доступа, который работает на базе протокола авторизации OAuth 2.0 и генерируется с помощью логина и пароля пользователя. В отдельных случаях токен генерируется прямо в интерфейсе социальной сети, например для получения доступа к приложению или сообществу.
С помощью токена (access_token) вы можете использовать практически весь функционал социальной сети Вконтакте. Узнать полный список методов для работы с API Вконтакте вы можете по ссылке: https://vk.com/dev/methods
Существует несколько типов токенов:
- Ключ доступа пользователя – для доступа к функционалу пользователя
- Ключ доступа сообщества – для доступа к функционалу сообщества
- Ключ доступа приложения – для доступа к функционалу приложения
Способы узнать токен бота в «Телеграме»
Узнавать токен бота можно несколькими способами, такими как:
- подбор требуемого значения путем перебора всех возможных комбинаций, на профессиональном сленге «брутфорс», при длине идентификатора в 40 символов на решение задачи могут уйти десятки лет;
- взлом переписки с ботом, выдающим токены, однако, по утверждению создателя «Телеграма», это невозможно, такие случаи до сих пор неизвестны;
- захват учетной записи, которой принадлежит bot, для чего потребуется доступ к смартфону владельца.
Узнать токен бота можно перебором всех возможных комбинаций.
Для рядового пользователя вероятность завладеть ботом мала. Отсюда следует, что предложение услуг и программного обеспечения для взлома представляется попыткой продать некачественный товар или неисполнимые обязательства, т. е. мошенничеством.
Чужого бота
Получение чужого токена равносильно его взлому, может преследоваться согласно административному или уголовному законодательству. Попытки узнать код обманным путем также преследуются по закону. Для обмана Telegram-bot написаны скрипты, главной задачей которых есть попытка запутать программу, сломать сценарий ее работы. Я уделю внимание мерам предосторожности, уменьшающим вероятность взлома аккаунта:
- не пользуйтесь услугами сторонних лиц по взлому бота или аккаунта;
- не применяйте программ взлома аккаунта через «брутфорс»;
- не доверяйте фотографиям, якобы доказывающим действенность методов вскрытия, скорее всего, они окажутся скриншотами, отредактированными в графическом пакете;
- проверяйте написание username для обнаружения похожих названий, с целью обмана может быть создана учетная запись, отличная от оригинала на 1 символ.
- ни при каких обстоятельствах не делайте авансовых платежей, что бы ни обещали вам.
Несмотря на заявления и премию в $300 000, обещанную создателем мессенджера, еще никто не смог найти решение задачи.
Своего бота
Получить токен робота удобно при помощи @BotFather.
Также читайте: Способы регистрации в Telegram без сим карты и можно ли зайти с компьютера без телефона
@BotFather позволяет получить токен робота.
Необходимо зайти в свой аккаунт и выполнить следующие действия:
- запустить BotFather;
- набрать команду /mybots;
- выбрать из списка требуемое наименование;
- нажать кнопку API token;
- сохранить значение.
Как получить ключ доступа пользователя
Мы рассмотрим два способа получения токена (access_token) пользователя:
- С помощью логина и пароля
- С помощью логина, пароля и дфухфакторной авторизацией
Получение ключа доступа пользователя с помощью логина и пароля:
- Открываем ссылку: https://api.vk.com/oauth/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=НОМЕР-ТЕЛЕФОНА&password=МОЙ-ПАРОЛЬ (предварительно подставив свои данные в переменные username= и password=
- В окне вы увидите следующее сообщение:
- Вам необходимо перейти к адресной строке и скопировать ключ который находится после access_token= и до &user_id
Данный набор букв и цифр это и есть ваш ключ доступа пользователя (access_token).
Получение ключа доступа пользователя с помощью логина, пароля и двухфакторной авторизации:
- Открываем ссылку: https://api.vk.com/oauth/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=НОМЕР-ТЕЛЕФОНА&password=МОЙ-ПАРОЛЬ (предварительно подставив свои данные в переменные username= и password=
- В окне будет указана ссылка для перехода (redirect_uri):
- Переходи по ссылке и вводим код полученный в виде СМС или сообщения от администрации Вконтакте:
- В следующем окне вы увидите следующее сообщение:
- Вам необходимо перейти к адресной строке и скопировать ключ который находится после access_token= и до &user_id
Данный набор букв и цифр это и есть ваш ключ доступа пользователя (access_token).
Xiaomi miio получение токена для доступа к устройству
miio — проприетарный шифрованный сетевой протокол для взаимодействия Wi-Fi устройств компании Xiaomi и ее суббрендов с приложением Mi Home в локальной сети. Для интеграции устройств с альтернативными системами автоматизации в подавляющем большинстве случаев необходим token для доступа к устройству. Что бы получить token устройство должно быть привязано к учетной записи Xiaomi в приложении Mi Home.
Универсальный способ #1 — Xiaomi cloud token extractor
Самый простой и быстрый способ получения token’а на данный момент для всех устройств компании Xiaomi использование утилиты Xiaomi cloud token extractor. В случае OS Windows это утилита, в случае использования Unix/Linux это скрипт, написанный на Python. Проект выложен на GitHub.
Для Ubuntu и Raspberry Pi установка Pyton3 и необходимых компонентов будет выглядеть так:
$ sudo apt-get install python3 python3-pip $ pip3 install pycryptodome pybase64 requests
Скачиваем скрипт:
$ wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/raw/master/token_extractor.py
Запуск скрипта:
$ python3 token_extractor.py
Для Windows скачиваем утилиту с GitHub: https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/releases/latest/download/token_extractor.exe и запускаем ее.
При запуске утилита/скрипт попросит авторизоваться учетной записью Xiaomi. Необходимы:
- E-mail или User ID Xiaomi
- Пароль от учетной записи
- Выбрать страну привязки устройств, можно оставить пустым, и программа проверит для всех перечисленных стран
Результат:
$ python3 token_extractor.py Username (email or user ID):
my_xiaomi_mail_or_user_id Password: my_xiaomi_password Country (one of: ru, us, tw, sg, cn, de) Leave empty to check all available: Logging in… Logged in. Devices found for country «cn»: ——— NAME: Xiaomi Mi Gateway v.2 ID: XXXXXXXX IP: 192.168.XXX.XXX TOKEN: 1234567890abcdef1234567890abcdef MODEL: lumi.gateway.v3 ——— NAME: Mi IR Remote control ID: XXXXXXXXX IP: 192.168.XXX.XXX TOKEN: 1234567890abcdef1234567890abcdef MODEL: chuangmi.remote.v2 ——— NAME: Miji Robot Vacuum Cleaner 1C ID: XXXXXXXXX IP: 192.168.XXX.XXX TOKEN: 1234567890abcdef1234567890abcdef MODEL: dreame.vacuum.mc1808
Огромным плюсом этого метода является то, что помимо подключенных Wi-Fi устройств, утилита показывает подключенные Bluetooth устройства, подключенные к шлюзам ZigBee устройства, созданные пульты для Mi IR Remote control.
——— NAME: Xiaomi Mijia BLE Temperature and Humidity Sensor ID: blt.3.ubsv8hlXXXXX IP: XXX.XXX.XXX.XXX TOKEN: 1234567890abcdef123456789 MODEL: cleargrass.sensor_ht.dk1 ——— NAME: Aqara Smart Wall Socket ID: lumi.158d000XXXXXXX IP: TOKEN: MODEL: lumi.ctrl_86plug.aq1
Это удобно использовать для определения ID ZigBee устройств.
Универсальный способ #2 — модифицированный Mi Home от vevs для Android
Mi Home от vevs — модифицированный Mi Home с переводом действий, условий и статусов (русский и английский языки), подробнее в блоге автора.
- Удаляем оригинальный Mi Home
- Скачиваем и устанавливаем последнюю версию Mi Home от vevs для Android
- Запускаем установленное приложение Mi Home
- Авторизуемся в приложении Mi Home
- Открываем плагин необходимого устройства
- Настройки -> Дополнительные настройки -> Информация о сети
- В самом низу поле «Токен»
Универсальный способ #3 — Mi Home v5.4.49 для Android
Способ достаточно старый, но все еще действенный. Mi Home версии v5.4.49 для Android ведет логи взаимодействия с устройствами, логи хранятся в папке /Smarthome/logs в виде текстовых файлов. Порядок действий следующий:
- Скачиваем и устанавливаем Mi Home v5.4.49 для Android. Если есть второе устройство, то лучше все операции делать на нем, иначе придется удалить текущую версию Mi Home
- Запускаем установленное приложение Mi Home
- Авторизуемся в приложении Mi Home
- Для надежности открываем необходимое устройство в Mi Home
- В менеджере файлов переходим в папку /Smarthome/logs
- Открываем текстовый log файл
- Просматриваем содержимое log файла, ищем по слову token
В папке может быть несколько текстовых файлов, просматриваем их все или удаляем всё содержимое папки и запускаем Mi Home v5.4.49 заново.
Результат просмотра log файла:
- Для Xiaomi Mi Gateway v.2 — {«did»:»XXXXXXXX»,»token«:»1234567890abcdef1234567890abcdef«,»longitude»:»XX.XXXXXXX»,»latitude»:»XX.XXXXXXX»,»name»:»Xiaomi Mi Gateway v.2″,
- Для Mi IR Remote control — {«did»:»XXXXXXXXX»,»token«:»1234567890abcdef1234567890abcdef«,»longitude»:»XX.XXXXXXXX»,»latitude»:»XX.XXXXXXXX»,»name»:»Mi IR Remote control»
Для моего пылесоса Mijia Robot Vacuum Cleaner 1C токен тоже есть в лог файле, но в плагин управления попасть нельзя т.к. не поддерживается версией приложения. Но это не важно, главное результат получить token.
Список устройств и методы с помощью которых мне удалось получить токен.
Xiaomi Mi Gateway 2 (DGNWG02LM)
Токен можно получить с помощью методов #1, #2 и #3 описанных выше.
Получить токен для региона Китай можно в программе Mi Home любой версии, пока писал статью на версии Mi Home v5.9.19 обновился плагин для шлюза, из которого похоже вырезали доступ к режиму разработчика. Но в версии Mi Home v.5.8.40 плагин шлюза версии v.2.77.1, для включения режима разработчика и получения сведений он нам сгодится.
- Скачиваем и устанавливаем Mi Home v5.8.40 для Android. Если есть второе устройство, то лучше все операции делать на нем, иначе придется удалить текущую версию Mi Home
- Запускаем установленное приложение Mi Home
- Авторизуемся в приложении Mi Home
- Открываем плагин шлюза Xiaomi Mi Gateway 2
- Нажимаем три точки в правом верхнем углу
- Сведения -> Информация о шлюзе, если пункты меню «Протокол связи локальной сети» и «Информация о шлюзе» отсутствуют, то пять раз нажимаем на пункт Версия плагина: 2.XX.X пока не появятся указанные пункты меню.
Рис. 1
Рис. 2
Рис. 3
Рис. 4
Рис. 5
Xiaomi Mijia Universal Remote control (MJYKQ01CM)
Токен можно получить с помощью методов #1, #2 и #3 описанных выше.
Вытащить токен из устройства можно с помощью паяльника и USB2TTL устройства. Для этого отклеиваем нижнюю резиновую противоскользящую вставку, под ней будет четыре болта, откручиваем их. Припаиваем провода к техническим контактам (GND0, TX0, RX0), подключаем шайбу к USB2TTL по схеме:
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
USB-to-TTL | Mi IR Remote Control |
GND | GND0 |
RX | TX0 |
TX | RX0 |
Подключаем USB2TTL к компьютеру, открываем программу PuTTY, выбираем тип подключения Serial, выставляем COM порт на котором подключен адаптер UART, скорость подключения 115200.
В меню Session -> Logging выставляем вести лог всего что выводится и указываем путь для файла лога. Нажимаем кнопку Open.
Подаем штатное питание на устройство, через несколько секунд в PuTTy начнет отображаться информация. Т.к. информация отображается достаточно быстро, то лучше воспользоваться поиском в логе по слову token.
Xiaomi Mijia Bedside Lamp (MJCTD01YL)
Из трех альтернативных систем автоматизации, опробованных мной, токен для доступа к лампе требует только OpenHAB. Токен можно получить с помощью методов #1, #2 и #3 описанных выше.
Xiaomi Mijia 1C Sweeping Vacuum Cleaner (STYTJ01ZHM)
Токен можно получить с помощью методов #1 и #3 описанных выше. Метод #2 тоже рабочий, но я не проверял, в Mi Home v5.9.19 от vevs я не нашел где отображается токен, поэтому рекомендовать его не могу. UPD: В версии Mi Home 6.1.701 от vevs метод #2 рабочий!
Как получить ключ доступа сообщества
- Заходим в сообщество где вы являетесь администратором
- Переходим в раздел “Управление”
- Переходим в раздел “Работа с API”
- Нажимаем “Создать ключ” и выбираем необходимые права доступа:
- Нажимаем “Создать”
- От выбранного типа подтверждения действий вам придет СМС или push – уведомление
- Подтверждаем создание ключа:
- Ключ успешно создан
* Для работы с Callback API и Long Poll API используйте полученный ранее токен сообщества.
Как получить ключ доступа приложения
- Переходим в раздел управления приложениями: https://vk.com/apps?act=manage
- Нажимаем “Создать приложение”
- Заполняем данные:
Я выбрал в качестве платформы “Сайт”
- Переходим в “Настройки приложения” где видим сервисный ключ доступа
Мы рассмотрели самые популярные способы получения токена (access_token) для работы с API Вконтакте.
Если у вас возникнут трудности при получении токена для работы с API Вконтакте, пишите в комментариях или мне в телеграм.