Как получить информацию о подключенных клиентов с WI-FI роутера

Задача — получить с WEB — интерфейса роутера информацию о подключенных устройствах (смартфон/часы/фитнес браслет) с помощью плагина HTTP, привязать эти данные к устройствам системы. Данный метод позволяет получать информацию без дополнительного программного обеспечения на устройстве и не зависит от режима энергосбережения.

Первым шагом нужно убедиться, что роутер предоставляет всю необходимую информацию для выполнения задуманного. Для этого нам нужно произвести небольшое исследование Web — интерфейса роутера. Для выполнения этой задачи нам потребуется Google Chrome, любой текстовый редактор и IP-адрес роутера. Все действия мы будем проводиnь на примере роутера: D-Link DIR-825

1. Поиск списка подключенных клиентов

Для начала мы попробуем найти информацию о подключенных клиентов WI-FI, не путать с таблицей DHCP.  Обычно эта информация представляет из себя таблицу с колонками: MAC-адрес, IP-адрес, Уровень сигнала, Время подключения, Тип сети и .т.д. Найти её можно в разделах меню: Информация, Состояние, Статус, Список Устройств, WI-FI Клиенты  и т.д.

Если поиски увенчались успехом, то можно записать необходимую нам информацию: MAC-адрес и URL страницы. Данная информация нам потребуется для настройки плагина HTTP.

2. Анализ парсинга страницы

После того как мы нашли нужную нам страницу, нам необходимо убедиться, что данные содержатся в коде страницы, и мы можем извлечь их с помощью регулярного выражения. Для этого на странице нужно нажать правой кнопкой мыши и выбрать пункт «Просмотр кода страницы» или «CTRL+U»

Откроется новая вкладка с кодом страницы, где нам необходимо нажать «CTRL+F» и вести в поле поиска наш MAC-адрес, и мы попадем на строчку с нужной нам информацией.

Теперь мы точно знаем, что все необходимое присутствует в коде страницы. Сохраните URL запроса для получения данных и MAC-адрес в текстовом редакторе и можно переходить к следующему шагу.

3. Анализ запроса авторизации

Каждый роутер имеет систему защиты, и перед тем как получить данные по HTTP запросу, мы должны обязательно выполнить авторизацию. Запрос авторизации обычно бывает методом POST и телом запроса BODY. Тело запроса — то самое, что нужно нам для успешной авторизации.

Для этого в браузере откроем «новое окно в режиме инкогнито» или «CTRL+SHIFT+N».

Далее мы вводим IP-адрес роутера  и попадаем на страницу авторизации. Для того, чтобы увидеть запрос авторизации в браузере, нам необходимо запустить панель «инструменты разработчика» или нажать «CTRL+SHIFT+I» В панели разработчика переходим на вкладку «Network» и ставим галочку «Preserve Log»

Теперь как обычно выполняем вход на роутер не закрывая панель разработчика. После авторизации мы увидим лог запросов браузера. Нажимая на запрос, мы можем увидеть свойства запроса и дополнительные параметры. Из свойств запроса видно, что он метода «POST» — именно то что мы ищем. Сохраните URL запроса авторизации в текстовый редактор.

Прокрутив свойства вниз, увидим, что у запроса имеется свойство «Form Data», это и есть тело запроса BODY

Нажмем на кнопку «view source», чтобы отобразить тело запроса в исходном виде.

Сохраните тело запроса (BODY) в текстовый редактор. У нас есть все параметры, чтобы перейти к настройке плагина HTTP.

4. Настройка плагина HTTP

Где скачать и как установить плагин вы можете посмотреть здесь

Нажимаем кнопку добавить канал, вводим ранее сохраненный URL запроса для получения данных и ставим галочку «предварительный запрос авторизации»:

Переходим на вкладку Авторизация и вводим ранее сохраненный URL запроса для Авторизации. Выбираем метод запроса POST, вводим в Body ранее сохраненное тело запроса для авторизации и обязательно все сохраняем. 

Нажимаем на кнопку создания подчиненного канала и заполняем поля:

Выбираем необходимое устройство, тип обработки «TEXT SEARCH» (нам нужно только попытаться найти MAC-адрес в результате ответа HTTP), в регулярное выражение вводим необходимый MAC-адрес (то что будем искать), заполняем если найдено =1,  и не найдено = 0. Сохраняем.

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

Закрыть меню