MagisterJS icon indicating copy to clipboard operation
MagisterJS copied to clipboard

magister moved school search

Open antonilol opened this issue 4 years ago • 26 comments

magister moved school search to https://accounts.magister.net/challenges/tenant/search?key=<SchoolName> the response only gives a displayName and an id about every school matching the query

example response (i searched for mar):

[{"displayName":"CSG Anna Maria van Schurman","id":"dec20beba9b54ebabf332be56d286c97"},{"displayName":"Lyceum Sancta Maria","id":"dcee9b98235d4cd99e4d4e65bfbe685f"},{"displayName":"Marecollege Leiden","id":"200c2de546744f019d23d52a932a299b"},{"displayName":"Maria Immaculata Lyceum","id":"7316a4f996c144fd900077f2caebbc0b"},{"displayName":"Maria Immaculata Lyceum (MIL)","id":"7316a4f996c144fd900077f2caebbc0b"},{"displayName":"Maris College","id":"ddfba09d0aef4b30bca0efae9039b45f"},{"displayName":"Maritieme Academie Harlingen","id":"904935f166ff4abab41583d8df0e03b6"},{"displayName":"Marne College","id":"243edfb18cb747b0957211baaa6145e0"},{"displayName":"Marnix College","id":"86cd9185ce364154ba26c4bda4691158"},{"displayName":"Martinuscollege","id":"3319706ea5e14f119541c7fe3fb011c4"},{"displayName":"Sancta Maria MAVO","id":"79a7f8d37aae4299ba833f8f04668dad"},{"displayName":"Technisch en Maritiem College Velsen","id":"bbec05ba1e064cedbf04d82acbf296c0"}]

antonilol avatar Sep 02 '21 19:09 antonilol

i got here because of the following error

something went wrong: FetchError: request to https://mijn.magister.net/api/schools?filter=Marnix failed, reason: getaddrinfo ENOTFOUND mijn.magister.net
    at ClientRequest.<anonymous> (/home/antoni/js/node_modules/node-fetch/lib/index.js:1461:11)
    at ClientRequest.emit (node:events:394:28)
    at TLSSocket.socketErrorListener (node:_http_client:447:9)
    at TLSSocket.emit (node:events:394:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  type: 'system',
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND'
}

antonilol avatar Sep 02 '21 19:09 antonilol

Hi, thanks for the report!

I'm afraid that -even if this issue has been fixed- the library doesn't work. It has simply been too long that somebody has updated it.

You can try to implement the needed change yourself, and see if the library does something useful then. You might even want to fork this library.

I'm not working on the library myself anymore, so if you or somebody else doesn't pick it up I'm afraid this error will persist.

lieuwex avatar Sep 03 '21 13:09 lieuwex

It has simply been too long that somebody has updated it.

Yes, true

You can try to implement the needed change yourself, and see if the library does something useful then.

I'll try

antonilol avatar Sep 03 '21 14:09 antonilol

I'll try

Are you still working on it?

kai-bor avatar Sep 05 '21 10:09 kai-bor

I tried but it gave me too much errors. Magister changed completely

antonilol avatar Sep 05 '21 12:09 antonilol

zoeken naar scholen kan idd niet meer, maar dat is eigenlijk ook niet nodig

je kan gewoon zelf een achool object meegeven als je die magister instance aanmaakt, {url: "https://school.magister.net"} zou moeten werken :)

de login flow is ook wat veranderd, maar ze volgen de oidc spec en die is redelijk makkelijk te implementeren, vgm werkt deze package van vincent ook nog: https://github.com/idiidk/magister-openid

netlob avatar Sep 05 '21 15:09 netlob

bedankt voor de info ga ik proberen

antonilol avatar Sep 05 '21 15:09 antonilol

something went wrong: AuthError: Error: AuthCodeValidation
    at /home/antoni/js/node_modules/magister.js/lib/magister.js:575:15

moet ik nog ergens een authCode in doen?

antonilol avatar Sep 05 '21 15:09 antonilol


something went wrong: AuthError: Error: AuthCodeValidation

    at /home/antoni/js/node_modules/magister.js/lib/magister.js:575:15

moet ik nog ergens een authCode in doen?

ja je moet naast username password en school ook een authCode meegeven, ik denk dat de enige manier om die te verkrijgen is om in de devtools van je browser te kijken

je kan ook een parser schrijven die eerst de login html ophaalt van magister, daar de naam van t huidige js uithaalt en dan dat js bestand opvragen en vervolgens met een regex de authcode eruit trekken

netlob avatar Sep 05 '21 16:09 netlob

ja je moet naast username password en school ook een authCode meegeven, ik denk dat de enige manier om die te verkrijgen is om in de devtools van je browser te kijken

die heb ik

je kan ook een parser schrijven die eerst de login html ophaalt van magister, daar de naam van t huidige js uithaalt en dan dat js bestand opvragen en vervolgens met een regex de authcode eruit trekken

js ga ik doen is denk ik wel handig

antonilol avatar Sep 05 '21 16:09 antonilol

en het werkt btw

antonilol avatar Sep 05 '21 16:09 antonilol

de naam van t huidige js uithaalt

dat is niet gelukt, de authCode uit de js halen wel en dat werkt goed maar de js is nu gehardcode in mn programma

antonilol avatar Sep 05 '21 16:09 antonilol

de naam van t huidige js uithaalt

dat is niet gelukt, de authCode uit de js halen wel en dat werkt goed maar de js is nu gehardcode in mn programma

hij is dynamisch, soms veranderd die authcode al na een uurtje en soms na 2 dagen, dus let daar even op want dan moet je m opnieuw opzoeken en hardcoden ;)

netlob avatar Sep 05 '21 16:09 netlob

daar liepen we tijdens het ontwikkelen van deze library ook tegenaan. je zou eventueel dus een parser kunnen schrijven alleen was dit een beetje buiten de scope van dit project. misschien werkt de parser die lieuwe ooit heeft gemaakt nog wel, dan kan je hier de code ophalen (https://raw.githubusercontent.com/simplyGits/magisterjs-authcode/master/code.json)

idiidk avatar Sep 05 '21 16:09 idiidk

dan kan je hier de code ophalen (https://raw.githubusercontent.com/simplyGits/magisterjs-authcode/master/code.json)

daar staat een oude authCode

en, ze hebben authCodes langer gemaakt nu is ie 5a2fc9ed85b0c92613

antonilol avatar Sep 05 '21 16:09 antonilol

hij is dynamisch, soms veranderd die authcode al na een uurtje en soms na 2 dagen, dus let daar even op want dan moet je m opnieuw opzoeken en hardcoden ;)

de authCode is niet gehardcode, maar de link naar het script waar die in staat: https://accounts.magister.net/js/account-ece636e938079a0d6583.js

antonilol avatar Sep 05 '21 16:09 antonilol

oh ja, nog iets voor een nieuwe schoolSearch functie, volgens mij heeft elke school de magister gebruikt een subdomein van magister.net (school.magister.net) die subdomeinen kan je in een object of array stoppen om op te zoeken lijst met subdomeinen: https://subdomainfinder.c99.nl/scans/2021-09-05/magister.net (en omgezet naar array: https://pastebin.com/Bew1DxSt) EDIT: sommige subdomeinen zijn geen school, bijv die met www beginnen (aan het eind van de array)

antonilol avatar Sep 05 '21 19:09 antonilol

oh ja, nog iets voor een nieuwe schoolSearch functie,

volgens mij heeft elke school de magister gebruikt een subdomein van magister.net (school.magister.net)

die subdomeinen kan je in een object of array stoppen om op te zoeken

lijst met subdomeinen: https://subdomainfinder.c99.nl/scans/2021-09-05/magister.net (en omgezet naar array: https://pastebin.com/Bew1DxSt)

EDIT: sommige subdomeinen zijn geen school, bijv die met www beginnen (aan het eind van de array)

klopt maar dan kan je nog steeds niet zoeken op naam, dan kan je met zo goed zelf dat subdomein invullen

ik heb hier een array met alle scholen die magister hadden (naam, id en url) die je opzich kan gebruiken. is een klein beetje outdated (verzameld een paar dagen voordat dat oude api endpoint verwijderd werd) maarja zovaak zal die lijst toch niet veranderen

https://pastebin.com/H82Nhbh1

netlob avatar Sep 07 '21 00:09 netlob

klopt maar dan kan je nog steeds niet zoeken op naam, dan kan je met zo goed zelf dat subdomein invullen

oh ja klopt lol

ik heb hier een array met alle scholen die magister hadden (naam, id en url) die je opzich kan gebruiken. is een klein beetje outdated (verzameld een paar dagen voordat dat oude api endpoint verwijderd werd) maarja zovaak zal die lijst toch niet veranderen

ok om nu mee te beginnen maar er moet vast ook een mogelijkheid zijn om zo'n array automatisch te maken door bijv die lijst met subdomein te requesten en uit de html de schoolnaam te halen

antonilol avatar Sep 07 '21 08:09 antonilol

he hoe gaat het, is het al af en kan ik anders helpen

kai-bor avatar Sep 12 '21 18:09 kai-bor

net ff een script gemaakt om de authCode op te halen. ik kijk ook nog of dit ding het over een paar dagen nog steeds doet (magister verandert de authCode continu) https://gist.github.com/antonilol/88a1edf32c5541baf9516a41bb0beb2d

antonilol avatar Sep 14 '21 18:09 antonilol

kan ik anders helpen

als je wil kan je de array van @Netlob https://github.com/simplyGits/MagisterJS/issues/154#issuecomment-913908112 in de school search functie zetten

antonilol avatar Sep 14 '21 18:09 antonilol

net ff een script gemaakt om de authCode op te halen. ik kijk ook nog of dit ding het over een paar dagen nog steeds doet (magister verandert de authCode continu) https://gist.github.com/antonilol/88a1edf32c5541baf9516a41bb0beb2d

volgens mij (als ik alles goed heb gedaan voor de rest) werkt deze functie niet meer, is hij nog steeds uit de devtools te halen? en zoja, hoe?

domiehomie avatar Dec 11 '21 20:12 domiehomie

Bij mij werkt het nog

antonilol avatar Dec 12 '21 13:12 antonilol

Bij mij werkt het nog

misschien heeft het te maken met het feit dat mijn school een oauth2 flow heeft?

domiehomie avatar Dec 12 '21 14:12 domiehomie

Oh dan zou je dat zelf uit moeten proberen tot het werkt wat mijn school heeft dat niet en dus kan ik dan niet doen 🙁

antonilol avatar Dec 13 '21 21:12 antonilol