Seite 1 von 1

JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 11:53
von Hase
Hallo,
ich möchte den Zählerstand unseres Druckers auslesen, um die Zählerstände automatisiert auszulesen und per Mail zur Leasingfirma zu schicken.
Der Drucker hat ein Webinterface, dass unter

http://192.168.12.200/wcd/system_counter.xml

zu erreichen ist und im Browser die entsprechenden Daten liefert, im Quelltext ist das eine .xml-Datei. Das Auslesen der Zählerstände aus der .xml-Datei kriege ich hin.

Wenn man die Webadresse mit python mit

Code: Alles auswählen

urlopen('http://192.168.12.200/wcd/system_counter.xml').read() 
abfragt, bekommt man allerdings nur einen fast leere Datei:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML lang="en">
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta content="text/javascript" http-equiv="Content-Script-Type">
<noscript>
<meta http-equiv="refresh" content="0; URL=/wcd/js_error.xml">
</noscript>
</HEAD>
<BODY BGCOLOR="#ffffff" LINK="#000000" ALINK="#ff0000" VLINK="#000000" onload="location.replace('/wcd/index.html?access=SYS_COU');" >
</BODY>
</HTML>
Ich lese das so, dass die xml-Datei mit den Zählerständen, die ich eigentlich haben will, vermutlich erst beim Laden per JS erstellt wird. Also funktioniert der oben angedachte Ansatz nicht.

Ich würde deshalb gerne die Arbeit von einem Webbrowser machen lassen. Ich übergebe die URL einem Browser, der holt die Datei und macht die JS-Arbeit und übergibt mir dann das xml-File. Frage: würde das so gehen und welche Pakete brauche ich dafür? Das ganze soll später automatisiert auf einem Linux-Server ohne graphische Oberfläche funktionieren.


Grüße

Ingo

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 11:57
von sparrow
JavaScript ist nicht meine Stärke, aber da gibt es ja die Seite '/wcd/index.html?access=SYS_COU' aufgerufen.
Schau doch mal, was da zurück kommt.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:02
von nezzcarth
Wenn du, wie gezeigt, nach einer xml Datei fragst, aber HTML zurück bekommst, kannst du auch mal ausprobieren, ob es etwas bringt, wenn du den HTTP-Accept-Header auf "application/xml,text/xml" setzt. Kann gut sein, dass der Server keine Content-Negotiation implementiert, aber es ist mit wenig Aufwand zu testen und kann dir etwas Arbeit sparen, falls es klappen sollte.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:04
von Hase
Die Abfrage:

urlopen('http://192.168.12.200/wcd/index.html?access=SYS_COU').read()

ergibt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML lang="en">
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta content="text/javascript" http-equiv="Content-Script-Type">
<link rel="stylesheet" type="text/css" href="/wcd/default.css">
<script type="text/javascript" src="/wcd/init.js"></script>
<noscript>
<meta http-equiv="refresh" content="0; URL=/wcd/js_error.xml">
</noscript>
</HEAD>
<BODY BGCOLOR="#ffffff" LINK="#000000" ALINK="#ff0000" VLINK="#000000" onload="init('/wcd/system_counter.xml','wcd','usr=S_COU;','','param=;',0);">
<input type="hidden" id="FUNCVER" value="10"/>
</BODY>
</HTML>

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:15
von __deets__
Na da steht doch eine JS Datei mit einer Funktion init, die dann aufgerufen wird. Auch diesem Brotkrumen wirst du folgen müssen.

Oder einfach im Netzwerk Tab deines Browser Debuggers den Verkehr betrachten & schauen, was genau da am Ende passiert.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:29
von Hase
Dahinter stehen insgesamt 11 js-Dateien mit japanischen Kommentaren

/* 短縮宛先チェック用 */
var checkAbbrMode = '';
/* クッキーツッル */

Das kriege ich nicht hin. Deshalb wollte ich ja einen Browser dazu bewegen, dass er die JS-Dateien für mich abarbeitet.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:33
von __deets__
Ah. Habe nur die letzten zwei Posts gelesen. Und wie gesagt, ich kann mir schwer vorstellen das JS die Daten zum Download wirklich generiert. Ich bin nicht mehr topfit in HTTP & co, aber damals(tm) ging das nicht. Im Network Traffic Tab des Browsers sollte schlussendlich die letzte HTTP Anfrage auftauchen, die das XML liefert. Wenn das nicht passiert - dann kannst du selenium benutzen.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 12:56
von __deets__
Und so wie‘s aussieht geht es doch - https://stackoverflow.com/questions/366 ... ugh-server

Ich würde trotzdem erstmal auf die Variante Netzwerk Debugger setzen.

Re: JS-Webseite abfragen

Verfasst: Montag 11. November 2019, 13:00
von __blackjack__
Bei einem Drucker könnte es sich auch lohnen mal zu schauen ob man die gewünschten Daten nicht auch per SNMP bekommen kann.