Hallo
ich benötige mal Unterstützung. Schwarm Wissen
ich möchte gern den Vertretungsplan meines Sohnes auslesen um dann später anzuzeigen aus so los ist. Das Filtern werde ich alleine hin bekommen das Problem ist ich bekomme den Quelltext schon gar nicht. Rückmeldung ist: " Your browser might not be supported by WebUntis"
ist schon klar ich komme mit dem ESP32 um die Ecke.
hat jemand eine Idee wie ich das umgehen kann?
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Du kannst nicht den Webseiten-Quelltext auslesen sondern nur den HTML bzw Javascript und CSS Code den der Server an den Browser schickt, wobei Teile von anderen Seiten/ Quellen ( zb Google Api / Fonts) nachgeladen werden können.
Kann der Client Javascribt ausführen?
ich muss das mal genauer beschreiben.... aus die Idee bin gekommen da ich ja die Wetterdaten auch auslesen kann.. OK ist ein wenig anders (json) aber gut.
ich nehme das alt bekannt Skipt von Santos.
/*
Rui Santos
Complete project details at Complete project details at https://RandomNerdTutorials.com/esp32-http-get-post-arduino/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
//Your Domain name with URL path or IP address with path
String serverName = "http://192.168.1.106:1880/update-sensor";
// the following variables are unsigned longs because the time, measured in
// milliseconds, will quickly become a bigger number than can be stored in an int.
unsigned long lastTime = 0;
// Timer set to 10 minutes (600000)
//unsigned long timerDelay = 600000;
// Set timer to 5 seconds (5000)
unsigned long timerDelay = 5000;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
}
void loop() {
//Send an HTTP POST request every 10 minutes
if ((millis() - lastTime) > timerDelay) {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
HTTPClient http;
String serverPath = serverName + "?temperature=24.37";
// Your Domain name with URL path or IP address with path
http.begin(serverPath.c_str());
// If you need Node-RED/server authentication, insert user and password below
//http.setAuthorization("REPLACE_WITH_SERVER_USERNAME", "REPLACE_WITH_SERVER_PASSWORD");
// Send HTTP GET request
int httpResponseCode = http.GET();
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
lastTime = millis();
}
}
ich bekomme ja auch quelltext zurück da steht, dann drin falscher Browser....
Auszug:
<a href="https://content.webuntis.com/WebUntis/static/2024.6.3/html/browser-not-supported-en.html" style="text-decoration: none; color: black;">
Your browser might not be supported by WebUntis - click here for further information!
</a> etc....
Die frage ist ob ich bei der Anfrage den Browsertyp mit übergeben kann ....
Du willst nicht den Quelltext, sondern den Inhalt empfangen.
Setze doch einfach den user-agent
z.B. auf "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" --> aktueller Firefox
nach einigen rumprobieren ist mir aufgefallen, das mein Problem wo anders liegen muss.
ich denke mal der ESP lädt/zeigt die Seite bevor sie fertig geladen ist.
Die habe ich auch ab und zu, wenn ich die Wettervorhersage mir ziehe.
Oder es liegt am JS ???
hat jemand noch eine Idee ?
VG
JKEF
<div id="grupetLoadingMessage">
WebUntis wird geladen ...
</div>
<script type="text/javascript" src="https://content.webuntis.com/WebUntis/static/2024.6.3/js/untis/wrapper.js"></script>
<script type="text/javascript" src="https://content.webuntis.com/WebUntis/static/2024.6.3/js/webuntis-monitor/main.js"></script>
*** hier sollten die Daten stehen*****
</body>
</html>
Ja, da wird Javascript nachgeladen.
Der Browser führt dann das Javascript aus uns zeigt das Ergebnis an. Wenn der Client kein Javascript ausführt, kommst Du natürlich nicht an die Daten / dargestellten Text.
Was ist das denn für ein seltsames Konstrukt, das die Daten erst per JS im Body aufbereitet? Die IP ist ja eine lokale, d.h. den Schrott hast Du Dir selbst installiert.
192.168.x.y ist eine lokale IP, die nicht geroutet wird, also sich in Deinem lokalen Netz befinden muss. Ob Du willst oder nicht.
MC ist der MicroController und der kann im Normalfall kein Javascript interpretieren. Es gibt eine Lib für den ESP32, die etwas davon können soll, aber ungetestet.