Получение данных со сберспасибо

Я пользуюсь Дзенмани (https://zenmoney.ru/) для учета расходов. Меня это приложение всем устраивает, но не хватает там подкачки траназкций из самого сбер спасибо.

Подкачка событий о карте работает по СМС-кам, а вот стягивать кешбечные транзакции не выходит.

Учитывая, что сберспасибо мне капает достаточно много и операций по ним у меня уже приличное количество (самокат, купер, мегамаркет), я решил себе сделать интеграцию.

Как стягивать данные

Теория

Для стягивания данных пойду по пути подключения к уже включенному браузеру. Авторизация в сбере не из простых и её реализовывать на уровне апишек будет крайне непросто.

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

Если авторизация слетит, то я руками также спокойно её проделаю на компе и интеграция заработает дальше.

Страница, которая будет парситься — https://spasibosberbank.ru/lk_history

Формат данных

Надо будет реагировать на события XHR запросов к адресу

https://spasibosberbank.ru/api/online/personal/loyalitySystem/transactions?page=1&cnt=100

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

Нужные поля уже выявлены. Выделил их на скрине красным

Первый успешный запуск и получение данных

По инструкции отсюда запустил браузер и запустил код для получения данных. Данные стягиваются успешно. Код для стягивания данных:

public async fetchTransactions(): Promise {
    const browser = await this.puppeteerService.getLocalBrowser();
    const page = await browser.newPage();
    try {
      const promise = new Promise((resolve, reject) => {
        page.on('response', async (response) => {
          const url = response.url();
          if (
            url.includes(
              `https://spasibosberbank.ru/api/online/personal/loyalitySystem/transactions`,
            )
          ) {
            if (response.status() === 200) {
              const data = await response.json();
              this.logger.log(`Data. ${data.data.length}`);
              resolve(data.data);
            } else {
              this.logger.log(`Error in fetching data`, response);
              reject(new Error('Error in fetching data'));
            }
          }
        });
      });
      await page.goto('https://spasibosberbank.ru/lk_history');
      await page.waitForSelector('.lk-history-list__transactions');
      const data = await promise;
      await page.close();
      return data;
    } catch (error) {
      this.logger.error(error);
      await page.close();
      throw error;
    }
  }

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

Обработку ошибок, устаревание сессии и другое пока не делал. Как поймаю такую ошибку - буду думать как отлавливать её.