PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JavaScript] Externe HTML Datei auslesen


Memorix
13.05.2009, 14:23:37
Hallo zusammen,

ich arbeite aktuell an einem Projekt wo es notwendig ist den Quellcode einer externen HTML Datei auszulesen. Ursprünglich wollte ich den Seiteninhalt der externen Datei über PHP auslesen da allerdings die anforderte Seite eine Anmeldung voraussetzt musste ich auf eine JavaScript Lösung ausweichen. Vorweg möchte ich erwähnen dass meine JavaScript Kenntnisse nicht besonders ausgeprägt sind.

Der bisherige Quelltext sieht so aus sieht so aus:

//GET String für die Anmeldung generieren
url_call += server_url;
url_call += "?username=" + username;
url_call += "&password=" + password;
url_call += "&requestType=log+in";

//URL für die Anmeldung aufrufen
winSession = window.open(url_call);

//GET String für die Abfrage generieren
url_call = server_url;
url_call += "?displayLanguage=" + language;
url_call += "&country=" + country;
url_call += "&productiondate=" + production_date;
url_call += "&pricingdate=" + pricing_date;
url_call += "&timeout=" + timeout;
url_call += "&maxAlternatives=" + max_alternatives;
url_call += "&conflictMode=" + conflict_mode;
url_call += "&doUpdatePrices=" + update_prices;
url_call += "&sparte=" + sparte;
url_call += "&baumuster=" + baumuster;
url_call += "&nationalType=" + national_type;
url_call += "&NEDExtension=" + ned_extension;
url_call += "&codeList=" + code_list;
url_call += "&requestType=initial+config.";
url_call += "&mode=newConfiguration";

//URL für die Abfrage aufrufen mit 500ms Zeitverzögerung
window.setTimeout(function() { winSession.location.replace(url_call) },500);


Wenn ich diesen Quellcode ausführe komme ich auf die HTML Datei die ich gerne automatisiert auslesen möchte. Um dieses zutun wäre aus meiner Sicht der folgende Befehl der richtig:


window.setTimeout(function() {html_content = winSession.document.getElementsByTagName('html')[0].innerHTML},500);
alert(html_content);


Leider führt der letzte Befehl nicht zu dem gewünschten Ergebnis.
Wenn ich das Script mit dem Firefox Browser ausführe wird mir in der Fehlerkonsole der folgende Fehler gemeldet:

Fehler: Erlaubnis zum Lesen der Eigenschaft Window.document wurde verweigert
Quelldatei: http://localhost/nsp/configration_checker.html
Zeile: 53

Leider kann ich nicht lokalisieren ob das Problem auf fehlerhaften Code oder Browser Sicherheitsrestriktionen basiert. Ich hoffe ihr könnt mir an dieser Stelle weiterhelfen.

Gruß
Memorix

cortex
13.05.2009, 16:58:13
[...] da allerdings die anforderte Seite eine Anmeldung voraussetzt musste ich auf eine JavaScript Lösung ausweichen

mit dieser einschätzung liegst du leider nicht richtig. mit einer bibliothek wie cURL geht das sogar richtig gut - sagt man (hatte bisher keine entsprechende anwendung).

wikipedia (http://de.wikipedia.org/wiki/CURL)
php manual (http://de3.php.net/manual/de/book.curl.php)

mit js würde ich persönlich hier auf gar keinen fall anfangen - js-cracks mögen das sicher anders sehen -.

cx

Indyk
14.05.2009, 08:03:17
Ergänzung zu cortex Links:
PHP-Kochbuch (http://www.selfphp.de/kochbuch/kochbuch.php?code=64)

Memorix
14.05.2009, 16:24:36
Hallo zusammen,

vielen Dank an euch beide. Nach dieser Erkenntnis werde ich weiter an einer Server basierten Lösung arbeiten. Ich habe heute bereits die ersten Versuche mit CURL gemacht und denke dass sich meine Anforderungen damit realisieren lassen.
Allerdings bin ich bereits auf die ersten Probleme gestoßen. Der im Netzwerk installierte Proxy-Server lässt nur authentisierte Netzwerkanfragen zu. Ich habe zwar die richtige CURL Option für die HTTP-Authentisierungsmethode gefunden (CURLOPT_PROXYAUTH (http://de.php.net/manual/de/function.curl-setopt.php)), allerdings wird in der php.net Dokumentation nicht beschrieben wie man den VALUE (User/Password) definiert.
Ich werde im Netz noch ein wenig suchen und eventuell noch mal ein Topic im PHP Bereich eröffnen.

Vielen Dank noch mal!

Gruß
Memorix

Edit: Habe soeben die ergänzende Option zu CURLOPT_PROXYAUTH gefunden (CURLOPT_PROXYUSERPWD). Mit dieser Option lassen sich die Parameter in Form von "[benutzername]:[passwort]" angeben.