Коммит.

This commit is contained in:
Alex 2026-06-15 17:01:13 +03:00
parent 9fc382ae28
commit 67272dc504

220
README.md
View File

@ -1,138 +1,41 @@
# Sber History To Excel # 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 ```text
https://sber.gb.7af.ru/ 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` - Netscape `cookies.txt`
- JSON-массив cookies - JSON-массив cookies
- обычный HTTP-заголовок `Cookie` - обычный 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 форма сразу проверяет, сможет ли сервер распарсить введенный формат. После вставки cookies форма сразу проверяет, сможет ли сервер распарсить введенный формат.
После выбора месяца экспорт скачивается ZIP-архивом. Внутри архива: ## Что делает экспорт
- `.xlsx` с основными полями операций - Получает операции через API истории операций Сбера.
- `.json` со списком всех операций в том виде, в котором они пришли из API - Забирает данные постранично.
- Оставляет только операции за выбранный месяц.
Каждый экспорт сохраняется в `data/exports` с уникальным именем ZIP-архива. После скачивания архив не удаляется; отдельные временные `.xlsx` и `.json` остаются только внутри архива. - Убирает дубли по идентификатору операции.
- Формирует Excel-файл и JSON со всеми исходными данными операций.
### Запуск через Docker Compose - Отдает результат ZIP-архивом.
```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))
```
## Формат результата
В Excel попадают основные поля операции: В Excel попадают основные поля операции:
@ -150,12 +53,81 @@ print(len(operations))
- код категории - код категории
- ID операции - ID операции
## Безопасность cookies
Cookies дают доступ к аккаунту СберБанк Онлайн в рамках активной сессии. Не сохраняйте их в коде, репозитории или публичных чатах.
В веб-интерфейсе cookies используются для запроса к Сберу и не сохраняются в файлы экспорта.
## Возможные ошибки ## Возможные ошибки
Если Cookie не задан: Если cookies устарели, Сбер может вернуть ошибку авторизации. В этом случае нужно снова войти в СберБанк Онлайн в браузере, скопировать свежие cookies и повторить экспорт.
```text Если форма пишет, что cookies не удалось распарсить, проверьте, что вы вставили полный текст cookies из расширения.
ValueError: Set Sber auth cookie in the Cookie environment variable.
## Технические подробности
### Локальный запуск веб-интерфейса
```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
```