Парсер показаний датчика непрерывного мониторинга глюкозы с веб-портала iCan Review
Warning
Проект не связан с iCan и создан сугубо для личного использования. Данные носят информационный характер - будьте внимательны и всегда сверяйтесь с официальным приложением
Данные с датчика непрерывного мониторинга глюкозы существуют в закрытой экосистеме. Официальные приложения привязаны к телефону, нет публичного API - и другого способа вытащить данные тоже. А если данные нужны? Возможно своя аналитика или интеграция в свои скрипты?
Перерыл интернет и нормальных решений не нашел. Есть только вариант вручную открыть мобильное приложение
После поиска информации был обнаружен веб-портал для медучреждений, на котором данные датчика глюкозы отображаются в реальном времени, куда я добавил себя как пациента и написал парсер который:
- Авторизуется на портале в мой аккаунт
- Раз в 1.5 минуты получает актуальную информацию
- Пишет ее в
data/latest.json, который можно читать откуда угодно
Никаких костылей, и сторонних приложений - только парсер и офф. сайт
{
"value": "5.2",
"unit": "mmol/L",
"time": "08/28/2026 18:07",
"fetched_at": "2026-08-28 18:10:19"
}Файл перезаписывается атомарно: json всегда либо старый, либо новый
-
Защита от блокировки Запросы идут не циклично, а со случайным интервалом в диапазоне
MIN_SECONDS_INTERVAL–MAX_SECONDS_INTERVAL. Помогает снизить нагрузку на портал и понижает риск блокировки. -
Отказоустойчивость Если с сайтом что-то произошло (протухла сессия или ответил с таймаутом), то парсер распознает это и после 3 неудачных попыток залогинится заново. Благодаря сохранённому профилю браузера
data/browser_profileповторные логины случаются редко и сессия не сбрасывается при каждом перезапуске -
Аккуратное завершение Docker контейнер корректно обрабатывает остановку: браузер закрывается и мусорных файлов не остаётся
Important
Сначала зарегистрируйтесь на веб-портале iCan Review — rus.icancgm.com/review/login. Парсер логинится именно при помощи этих данных. Это отдельный сайт, а не мобильное приложение
# 1. Клонируем репозиторий
git clone https://github.com/MySelfZalin/ican-scraper.git
cd ican-scraper
# 2. Создаём конфиг из шаблона
cp .env.example .env
# заполняем его (см. таблицу ниже)
# 3. Собираем и запускаем йнер
docker compose up -d --build
# 4. Смотрим логи и результат
docker compose logs -f
cat data/latest.json| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
ICAN_MAIL |
✅ да | — | Email от аккаунта iCan Review |
ICAN_PASSWORD |
✅ да | — | Пароль от аккаунта iCan Review |
MIN_SECONDS_INTERVAL |
нет | 60 |
Минимальный интервал опроса сайта, сек |
MAX_SECONDS_INTERVAL |
нет | 85 |
Максимальный интервал опроса сайта, сек |
HEADLESS |
нет | True |
Запуск браузера в headless-режиме |
💡 Лучше не ставьте время опроса меньше, чем 60 секунд, частые запросы увеличивают риск блокировки
.
├── main.py # парсер
├── config.py # конфигурация + чтение .env через pydantic-settings
├── requirements.txt
├── Dockerfile # non-root образ, Playwright внутри
├── docker-compose.yml # сервис + volume для данных
└── data/ # latest.json, scraping.log, browser_profile
