Grundbegriffe:
Curl ist ein extrem mächtiges Kommandozeilentool, um diverse Web-Zugriffe (und andere Protokolle) auszuführen.
Firefox und Chrome erlauben es, einen Request direkt als curl-Kommandozeile zu kopieren und ihn so zu reproduzieren.
Damit das mit Nesa funktioniert, müssen jeweils auch die Cookies (und evtl. weitere Dinge) mitgsendet und angepasst werden. Dazu werden die folgenden Optionen zusätzlich verwendet:
curl -L -b nesa-cookies.txt -c nesa-cookies.txt ....
Damit werden Redirects verfolgt (-L) und die cookies aus einer Datei gesendet (-b) und gespeichert (-c).
Wir könnten mit regular Expressions dahinter, das ist aber mühsam und unstabil.
Wir verwenden deshalb eine Bibliothek, die HTML parsen kann und womit der entstehende Baum mit XPath durchsucht werden kann.
Um sich nicht die ganze Zeit in NESA neu anzumelden, speichern Sie jeweils die aktuelle Seite in Datei und laden Sie diese direkt ins Programm. Um eine Seite weiterzukommen, müssen die Seiten aber vom Web geladen werden.
Im folgenden werden die verwendeten Techniken vorgestellt, wie überhaupt entdeckt wurde, dass und dann wie die Raumpläne in XML geladen werden.
Start: Auf der Raumplanseite, wo Räume ausgewählt werden können. Developper-Tools, offen.
xhr liefert und von einer Datei ajax.js ausgelöst wurde.loadStundenplanReal, die direkt im index.php ausgeliefert wird (Zeile 2994, eventuell nicht stabil).Damit hat man alles Nötige, um die XML-Daten via curl zu laden. Man könnte jetzt noch reiner Neugierde schauen, ob man den Code findet, der den Stundenplan darstellt.