// личный проект
ЕМИАС Бот
Telegram-бот для автоматической записи ко врачам в Москве. Есть платные сервисы, которые мониторят расписание за тебя, но я решил сделать своё - бесплатное, на своём сервере, с полным контролем. Бот сам авторизуется на портале, следит за свободными слотами и уведомляет, когда появляется запись к нужному врачу.
// как работает
От авторизации до уведомления
Авторизация
Бот открывает управляемый браузер, переходит на сайт ЕМИАС, логинится через Сбер ID. Пользователь сканирует QR-код в приложении банка и вводит SMS-код.
Перехват токена
После входа бот перехватывает токен авторизации прямо из запросов браузера. Этот токен нужен для обращения к непубличному API портала.
Настройка
Пользователь выбирает направление и врача прямо в Telegram. Бот загружает список направлений и доступных специалистов через API.
Мониторинг
Каждые 15 минут бот проверяет наличие свободных слотов. Как только запись появляется - уведомление в Telegram со ссылкой на портал.
// обратная разработка
Разобрал непубличный API ЕМИАС
У портала ЕМИАС нет открытого API. Я проанализировал, как сайт общается с сервером, и нашёл нужные запросы: получение направлений пациента, список врачей и свободных слотов, текущие записи. Всего 5 запросов, которых хватает для полного цикла мониторинга.
Самая сложная часть - авторизация. Она проходит через цепочку из трёх сайтов: ЕМИАС → mos.ru → Сбер ID. На каждом этапе нужно корректно обработать редиректы, дождаться загрузки, нажать нужные кнопки. Программа имитирует действия реального пользователя - со случайными задержками между действиями, чтобы не вызывать подозрений у систем защиты.
Уведомление: найден свободный слот, кнопки для записи и управления
Справка: команды, инструкция по авторизации, возможности мониторинга
// возможности
Что умеет бот
Мониторинг записи
Следит за свободными слотами к выбранному врачу. Уведомляет только когда слоты реально появляются, без спама.
Перенос записи
Если уже записан, но хочешь раньше - бот ищет слоты до текущей даты записи и уведомляет о более ранних вариантах.
Автообновление сессии
Токен авторизации живёт 1 час. Бот сам обновляет его каждые 5 минут через управляемый браузер. Если не получается - уведомляет и ставит мониторинг на паузу.
Умная обработка ошибок
3 ошибки подряд - автопауза мониторинга с уведомлением. После повторной авторизации всё возобновляется автоматически.
// под капотом
Технические детали
Управляемый браузер
Puppeteer с имитацией поведения реального пользователя: случайные задержки между действиями, человекоподобный ввод.
Сохранение сессий
Cookies всех трёх сайтов (ЕМИАС, mos.ru, Сбер) сохраняются и переиспользуются. Сессия живёт до 7 дней.
Docker-контейнер
Один контейнер с Node.js и Chromium. Ограничение памяти 1 ГБ. Крутится на VPS, работает 24/7.
Логирование
Структурированные логи с ротацией. Ошибки, статусы проверок, обновления токенов - всё записывается.