Probs beim Auslesen einer Website

  • Hallo Gemeinde,

    für ein größeres Projekt benötigen wir die Seriennummern der am KVM-Switch angeschlossenen Dongles. Dies werden leider nur und ausschließlich auf einer Seite der WEB-Konsole des KVM angezeigt.
    Ich habe nun versucht das Auslesen der Informationen via Firefox (Browser öffnen, Webconsole des KVMs öffnen, per Sendbefehle zur Maintenance-Website wechseln und den Inhalt kopieren...) zu machen. Soweit würde dies auch funktionieren, wenn da nicht die Eigenheiten des Firefox dazwischen funken würden, wie z.B.
    das sich die Browserinstanz nicht richtig schliesst, bzw. beim neu öffnen eine Fehlermeldung erscheint, das der Browser noch in einer Instanz läuft oder er will die vorher geöffnete Instanz wieder herstellen, etc...

    Kann man mit Autoit ein eigenes Browserfenster erstellen oder wie würdet ihr da rangehen?

  • Hi :)

    Für die Browserautomation gibt es die WebDriver UDF in AutoIt (z.B. https://www.autoitscript.com/wiki/WebDriver).
    Ich hab sie selbst nicht genutzt. SOLVE-SMARTist dort meines wissens nach aktiver. Ich bin gerade eher in python mit selenium (ChromeWebDriver), BeautifulSoup,... unterwegs, wenn du dahin wechseln möchtest könnte ich dir eher weiterhelfen.

    Ansonsten wäre es sinnvoll, sich mal genauer anzuschauen, was auf der Webseite passiert (Web Developer Tools, insbesondere der Network Tab), vllt. wird nur eine bestimmte api abgerufen oder man könnte sich direkt mit einem WebSocket verbinden,... wäre alles einfacher und zuverlässiger als webseiten automatisierung (insbesondere mit Send,...).

    LG, Kanashius

  • Hi hipfzwirgel , hi Kanashius 👋 ,

    ganz recht, ich bin in diesem Themengebiet recht bewandert, würde jedoch auch erstmal schauen ob du per API requests an die Infos kommst die du brauchst.

    Mit Send() und Co. würde ich nichts im Browser machen (mal abgesehen von wenigen Ausnahmen). Jedoch sei gesagt, dass der Einstieg mit au3Webdriver (dem AutoIt WebDriver Projekt) nicht gerade einfach ist. Daher hatte ich vor einiger Zeit einen Wrapper dazu geschrieben der vieles vereinfacht. Schaue dir also bei Bedarf gern autoit-webdriver-boilerplate an (lies die README.md) und gib Bescheid ob du damit zurecht kommst.

    Video-Tutorial-Reihe:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    (steht aber auch in der README.md)

    -----------------

    • Kannst du noch mehr beschreiben wie die Webseite aussieht bzw. welche Informationen du so brauchst?
    • Ist ein Login dabei, damit du zu deiner Zielseite kommst?
    • Geht es um auslesen des Seitenquellcodes oder bspw. einzelner Bereiche (div, section)?

    Viele Grüße
    Sven

  • Hallo Kanashuis, hallo Solve-Smart,

    zunächst vielen lieben Dank für eure Antworten. Ja man benötigt ein Login um sich die Konsole im Browser anzeigen zu lassen.

    So wie ich den Quelltext verstehe wird der Inhalt der jeweiligen Seite per JS zur Laufzeit generiert. Auf der Website wird eine Tabelle dargestellt, die die Portnummer, den dort angeschlossenen Rechnernamen und noch u.a. die Seriennummer des am Zielrechner angeschlossenen USB-Dongle(DCIM) des KVM's anzeigt. Das sind auch die Infos dir wir für das Projekt benötigen.
    Leider gibt es weder eine Möglichkeit via SSH oder sonst an diese Infos zu kommen. Es gäbe zwar laut Hersteller ein SDK für die KVMs aber diese Lizenz würde mehrere tausend €uro kosten.

    Mit welchen WEB-Developer Infos könnte ich euch hier weiterhelfen?

  • Hi, das hört sich erstmal gut an.

    Wenn die Daten mit JS zur Laufzeit ins HTML eingefügt werden gibt es im Hintergrund ziemlich sicher eine extra Abfrage die die Daten (vmtl. als Json) zurückgibt, was dann mit JS verarbeitet und ins HTML eingefügt wird.

    Du kannst mal (in Firefox) unter Tools->Browser Tools->Web Developer Tools auswählen und dort auf den Reiter Network gehen. Danach die Seite neuladen.
    Dort dürfte dann eine ganze Liste an Dateien abgerufen werden. Schau in der Tabelle dann unter "Type" nach json (oder generell alles mal durchschauen).
    Wenn du auf einen Eintrag klickst öffnet sich rechts ein Fenster, dort kannst du unter "Response" schauen was auf die Anfrage geantwortet wurde (ggf. den "Raw" toggle umlegen) irgendwo müssten dort die gewollten Daten auftauchen.
    Wenn du den passenden Eintrag gefunden hast: Rechtsklick->Copy Value->Copy as cUrl
    Das Ergebnis kannst du dann hier posten (nachdem du private Infos, die da drin sein könnten, wie host, user, passwort,... durch Beispieldaten ersezt hast (nicht komplett löschen, nur z.B. "SuperPasswort" durch "12345678" oder so ersetzen, wir müssen wissen, ob es gebraucht wird).


    LG Kanashius

  • Hallo Kanashius,

    ich habe nach deiner Anleitung gehandelt aber unter Response, gibt es leider keine Zeile die die gewünschten Daten wie z.B.
    Port Name Type ...
    1 Rechnername_L1 DVM-HDMI 8000 5A97 HUX1...

    anzeigt. ;(;(;( Es taucht auch keine json datei, auf sondern nur html, js und css Dateien. Die js-Dateien haben keine Antwort verfügbar.

    Ich fürchte die Webseiten sind genauso schlecht umgesetzt wie die SSH-Schnittstelle der KVMs und die ist wirklich richtig grottig...

  • Dem kann ich nicht viel hinzufügen 🤝 . Lass Kanashius und/oder mich, via Discord (dort kannst du wie bei WebEx, Slack, MS Teams, Zoom und Co. einfach deinen Bildschirm teilen), auf die Webseite schauen und wir leiten dich durch die DevTools des Browsers. Warum? Die Informationen sind relativ sicher dort im Netzwerk Tab zu finden.

    Falls du dies nicht möchtest oder es nicht geht, müssen wir mit Screenshots (oder Videos) arbeiten, damit wir an mehr Infos von dir kommen.

    Viele Grüße
    Sven