Перейти к содержимому
← Все проекты

// личный проект

ЕМИАС Бот

Telegram-бот для автоматической записи ко врачам в Москве. Есть платные сервисы, которые мониторят расписание за тебя, но я решил сделать своё - бесплатное, на своём сервере, с полным контролем. Бот сам авторизуется на портале, следит за свободными слотами и уведомляет, когда появляется запись к нужному врачу.

Стек Node.js, TypeScript, Puppeteer, Docker
Тип Личный инструмент
Инструмент разработки Claude Code (субагенты, цепочки задач)

// как работает

От авторизации до уведомления

01

Авторизация

Бот открывает управляемый браузер, переходит на сайт ЕМИАС, логинится через Сбер ID. Пользователь сканирует QR-код в приложении банка и вводит SMS-код.

02

Перехват токена

После входа бот перехватывает токен авторизации прямо из запросов браузера. Этот токен нужен для обращения к непубличному API портала.

03

Настройка

Пользователь выбирает направление и врача прямо в Telegram. Бот загружает список направлений и доступных специалистов через API.

04

Мониторинг

Каждые 15 минут бот проверяет наличие свободных слотов. Как только запись появляется - уведомление в Telegram со ссылкой на портал.

// обратная разработка

Разобрал непубличный API ЕМИАС

У портала ЕМИАС нет открытого API. Я проанализировал, как сайт общается с сервером, и нашёл нужные запросы: получение направлений пациента, список врачей и свободных слотов, текущие записи. Всего 5 запросов, которых хватает для полного цикла мониторинга.

Самая сложная часть - авторизация. Она проходит через цепочку из трёх сайтов: ЕМИАС → mos.ru → Сбер ID. На каждом этапе нужно корректно обработать редиректы, дождаться загрузки, нажать нужные кнопки. Программа имитирует действия реального пользователя - со случайными задержками между действиями, чтобы не вызывать подозрений у систем защиты.

Уведомление о свободном слоте

Уведомление: найден свободный слот, кнопки для записи и управления

Справка по боту ЕМИАС

Справка: команды, инструкция по авторизации, возможности мониторинга

// возможности

Что умеет бот

Мониторинг записи

Следит за свободными слотами к выбранному врачу. Уведомляет только когда слоты реально появляются, без спама.

Перенос записи

Если уже записан, но хочешь раньше - бот ищет слоты до текущей даты записи и уведомляет о более ранних вариантах.

Автообновление сессии

Токен авторизации живёт 1 час. Бот сам обновляет его каждые 5 минут через управляемый браузер. Если не получается - уведомляет и ставит мониторинг на паузу.

Умная обработка ошибок

3 ошибки подряд - автопауза мониторинга с уведомлением. После повторной авторизации всё возобновляется автоматически.

// под капотом

Технические детали

Управляемый браузер

Puppeteer с имитацией поведения реального пользователя: случайные задержки между действиями, человекоподобный ввод.

Сохранение сессий

Cookies всех трёх сайтов (ЕМИАС, mos.ru, Сбер) сохраняются и переиспользуются. Сессия живёт до 7 дней.

Docker-контейнер

Один контейнер с Node.js и Chromium. Ограничение памяти 1 ГБ. Крутится на VPS, работает 24/7.

Логирование

Структурированные логи с ротацией. Ошибки, статусы проверок, обновления токенов - всё записывается.