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ż:
- Te same dane logowania zakładają poprawną sesję Synergia (
DZIENNIKSID, SDZIENNIKSID są obecne).
- To samo zachowanie występuje na dwóch różnych kontach dziecka.
- 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.
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.3na dwóch prawdziwych kontach dziecka w Librusie.Logowanie wygląda na poprawne:
authorize()kończy się bez błęduhttps://synergia.librus.plpojawiają się ciasteczkaDZIENNIKSIDiSDZIENNIKSIDNatomiast kilka metod tylko do odczytu zwraca puste dane dla obu kont:
client.info.getGrades()->[]client.calendar.getTimetable()-> pusty obiekt planu / brak kluczy dniclient.inbox.listAnnouncements()->[]client.inbox.listInbox(5)->[]client.info.getAccountInfo()nie zwraca użytecznych danych uczniaTo wygląda bardziej na problem parsera / selektorów niż na nieprawidłowe dane logowania, ponieważ:
DZIENNIKSID,SDZIENNIKSIDsą obecne).LIBRUS Synergia, ale selektory używane przez bibliotekę niczego nie znajdują.Sprawdziłem bezpośrednio następujące strony i selektory:
przegladaj_oceny/uczenLIBRUS Synergiatable.decorated.stretch:0info.getGrades():0ogloszeniaLIBRUS Synergiadiv#body div.container-background table.decorated:0wiadomosci/5inbox.listInbox():0To sugeruje, że:
Minimalny przykład reprodukcji:
Środowisko:
librus-api:2.15.3v20.xJeśli to pomoże, mogę sprawdzić poprawkę na swoich kontach albo przygotować zanonimizowane fragmenty HTML.