From 67272dc5040a2cd0a2b19ff62ebd881532834448 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 15 Jun 2026 17:01:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BC=D0=B8=D1=82.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 220 ++++++++++++++++++++++++------------------------------ 1 file changed, 96 insertions(+), 124 deletions(-) diff --git a/README.md b/README.md index 55c1309..34ace1d 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,41 @@ # Sber History To Excel -Скрипт выгружает историю операций СберБанк Онлайн за выбранный месяц и сохраняет ее в один Excel-файл `.xlsx`. - -## Что делает - -- Получает операции через API истории операций Сбера. -- Забирает данные постранично. -- Оставляет только операции за указанный месяц. -- Убирает дубли по идентификатору операции. -- Сохраняет результат в один `.xlsx` файл. - -## Требования - -- Python 3.10+ -- Библиотека `requests` -- Актуальный Cookie авторизованной сессии СберБанк Онлайн - -Установка зависимости: - -```bash -python3 -m pip install requests -``` - -## Настройка Cookie - -Скрипт берет Cookie из переменной окружения `Cookie`. - -```bash -export Cookie='твой-cookie-из-браузера' -``` - -Не сохраняй Cookie в коде или в репозитории: это чувствительные данные доступа к аккаунту. - -## Запуск - -Пример выгрузки операций за май 2026 года: - -```bash -python3 load_data.py --year 2026 --month 5 --output sber_may_2026.xlsx -``` - -Если `--output` не указать, файл будет создан с именем: - -```text -sber_operations_2026_05.xlsx -``` - -## Использование из кода - -```python -from load_data import SberMonthHistoryExporter - -exporter = SberMonthHistoryExporter() -output_path = exporter.save_month(2026, 5, "sber_may_2026.xlsx") - -print(output_path) -``` - -## Веб-интерфейс - -Запустить локальную форму: - -```bash -.venv/bin/python web_app.py -``` - -После запуска откройте: - -```text -http://127.0.0.1:8000 -``` - -Публичный адрес через Traefik: +Проект уже развернут на сервере: ```text https://sber.gb.7af.ru/ ``` -В форме можно вставить cookies в одном из поддержанных форматов, формат определяется автоматически: +Веб-интерфейс выгружает историю операций СберБанк Онлайн за выбранный месяц и скачивает ZIP-архив. Внутри архива лежат: + +- `.xlsx` с основными полями операций +- `.json` со списком всех операций в том виде, в котором они пришли из API + +## Как пользоваться + +1. Установите расширение Chrome [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1). +2. Откройте [СберБанк Онлайн](https://online.sberbank.ru/CSAFront/index.do) и авторизуйтесь. +3. Скопируйте cookies через расширение. +4. Откройте [https://sber.gb.7af.ru/](https://sber.gb.7af.ru/). +5. Вставьте cookies в поле формы. +6. Выберите месяц и скачайте ZIP-архив. + +Формат cookies определяется автоматически. Поддерживаются: - Netscape `cookies.txt` - JSON-массив cookies - обычный HTTP-заголовок `Cookie` -Для получения `cookies.txt` можно использовать расширение Chrome: -[Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1). - -Порядок действий: - -1. Установить расширение [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1). -2. Открыть [СберБанк Онлайн](https://online.sberbank.ru/CSAFront/index.do) и авторизоваться. -3. Скопировать cookies через расширение и вставить их в поле формы. - После вставки cookies форма сразу проверяет, сможет ли сервер распарсить введенный формат. -После выбора месяца экспорт скачивается ZIP-архивом. Внутри архива: +## Что делает экспорт -- `.xlsx` с основными полями операций -- `.json` со списком всех операций в том виде, в котором они пришли из API - -Каждый экспорт сохраняется в `data/exports` с уникальным именем ZIP-архива. После скачивания архив не удаляется; отдельные временные `.xlsx` и `.json` остаются только внутри архива. - -### Запуск через Docker Compose - -```bash -docker compose up --build -``` - -После запуска интерфейс будет доступен здесь: - -```text -http://127.0.0.1:8000 -``` - -В Docker файлы экспорта сохраняются в named volume `sberhistorytoexcel_sber-history-data`. - -Остановить контейнер: - -```bash -docker compose down -``` - -Можно отдельно получить операции без сохранения: - -```python -from load_data import SberMonthHistoryExporter - -exporter = SberMonthHistoryExporter() -operations = exporter.fetch_month(2026, 5) - -print(len(operations)) -``` - -## Формат результата +- Получает операции через API истории операций Сбера. +- Забирает данные постранично. +- Оставляет только операции за выбранный месяц. +- Убирает дубли по идентификатору операции. +- Формирует Excel-файл и JSON со всеми исходными данными операций. +- Отдает результат ZIP-архивом. В Excel попадают основные поля операции: @@ -150,12 +53,81 @@ print(len(operations)) - код категории - ID операции +## Безопасность cookies + +Cookies дают доступ к аккаунту СберБанк Онлайн в рамках активной сессии. Не сохраняйте их в коде, репозитории или публичных чатах. + +В веб-интерфейсе cookies используются для запроса к Сберу и не сохраняются в файлы экспорта. + ## Возможные ошибки -Если Cookie не задан: +Если cookies устарели, Сбер может вернуть ошибку авторизации. В этом случае нужно снова войти в СберБанк Онлайн в браузере, скопировать свежие cookies и повторить экспорт. -```text -ValueError: Set Sber auth cookie in the Cookie environment variable. +Если форма пишет, что cookies не удалось распарсить, проверьте, что вы вставили полный текст cookies из расширения. + +## Технические подробности + +### Локальный запуск веб-интерфейса + +```bash +.venv/bin/python web_app.py ``` -Если Cookie устарел, Сбер может вернуть ошибку авторизации. В этом случае нужно снова войти в СберБанк Онлайн в браузере и обновить значение переменной `Cookie`. +После запуска откройте: + +```text +http://127.0.0.1:8000 +``` + +### Запуск через Docker Compose + +```bash +docker compose up --build +``` + +После запуска интерфейс будет доступен здесь: + +```text +http://127.0.0.1:8000 +``` + +В Docker файлы экспорта сохраняются в named volume `sberhistorytoexcel_sber-history-data`. В volume остается только ZIP-архив; временные `.xlsx` и `.json` сохраняются только внутри архива. + +Остановить контейнер: + +```bash +docker compose down +``` + +### Использование из кода + +```python +from load_data import SberMonthHistoryExporter + +exporter = SberMonthHistoryExporter() +output_path = exporter.save_month(2026, 5, "sber_may_2026.xlsx") + +print(output_path) +``` + +Можно отдельно получить операции без сохранения: + +```python +from load_data import SberMonthHistoryExporter + +exporter = SberMonthHistoryExporter() +operations = exporter.fetch_month(2026, 5) + +print(len(operations)) +``` + +### Требования для локального запуска + +- Python 3.10+ +- `requests` + +Установка зависимости: + +```bash +python3 -m pip install requests +```