Skip to content

Logowanie działa i ciasteczka sesji Synergia są ustawiane, ale metody tylko do odczytu zwracają puste dane na aktualnych kontach Librus #88

@andrewkoltsov

Description

@andrewkoltsov

Title: Logowanie działa i ciasteczka sesji Synergia są ustawiane, ale metody tylko do odczytu zwracają puste dane na aktualnych kontach Librus

Body:

Cześć,

testuję librus-api@2.15.3 na dwóch prawdziwych kontach dziecka w Librusie.

Logowanie wygląda na poprawne:

  • authorize() kończy się bez błędu
  • dla https://synergia.librus.pl pojawiają się ciasteczka DZIENNIKSID i SDZIENNIKSID

Natomiast kilka metod tylko do odczytu zwraca puste dane dla obu kont:

  • client.info.getGrades() -> []
  • client.calendar.getTimetable() -> pusty obiekt planu / brak kluczy dni
  • client.inbox.listAnnouncements() -> []
  • client.inbox.listInbox(5) -> []
  • client.info.getAccountInfo() nie zwraca użytecznych danych ucznia

To wygląda bardziej na problem parsera / selektorów niż na nieprawidłowe dane logowania, ponieważ:

  1. Te same dane logowania zakładają poprawną sesję Synergia (DZIENNIKSID, SDZIENNIKSID są obecne).
  2. To samo zachowanie występuje na dwóch różnych kontach dziecka.
  3. Bezpośrednie pobranie stron zwraca strony z tytułem LIBRUS Synergia, ale selektory używane przez bibliotekę niczego nie znajdują.

Sprawdziłem bezpośrednio następujące strony i selektory:

  • przegladaj_oceny/uczen
    • tytuł strony: LIBRUS Synergia
    • table.decorated.stretch: 0
    • selektor w info.getGrades(): 0
  • ogloszenia
    • tytuł strony: LIBRUS Synergia
    • div#body div.container-background table.decorated: 0
  • wiadomosci/5
    • selektor w inbox.listInbox(): 0

To sugeruje, że:

  • albo układ HTML w Synergii się zmienił i obecne selektory są już nieaktualne,
  • albo nowszy typ konta / nowszy flow logowania trafia na inną strukturę stron niż ta, której oczekuje obecny scraper.

Minimalny przykład reprodukcji:

"use strict";

const Librus = require("librus-api");

async function main() {
  const client = new Librus();
  await client.authorize(process.env.LIBRUS_LOGIN, process.env.LIBRUS_PASSWORD);

  const cookies = await client.cookie.getCookies("https://synergia.librus.pl");
  console.log(cookies.map((c) => c.key));

  console.log(await client.info.getGrades());
  console.log(await client.calendar.getTimetable());
  console.log(await client.inbox.listAnnouncements());
  console.log(await client.inbox.listInbox(5));
  console.log(await client.info.getAccountInfo());
}

main().catch(console.error);

Środowisko:

  • librus-api: 2.15.3
  • Node.js: v20.x
  • macOS

Jeśli to pomoże, mogę sprawdzić poprawkę na swoich kontach albo przygotować zanonimizowane fragmenty HTML.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions