Wieder einmal quälen mich nachts die schrecklichen Alpträume von IIS. Gestern Abends lange gesessen und doch nichts erreicht! Schrecklich! Heute morgen um 6:30 im Büro und es geht!
Dieses mal habe ich mit dem XMLHTTP Objekt im Disput gelegen. Obwohl ich es schon x-mal verwendet habe und sogar schon einen Artikel darüber geschrieben habe wieder ein Problem.
Das XMLHTTP Objekt ist im XML Parser enthalten und wunderbar dafür geeignet Websites automatisiert zu klauen und in die eigene Seite einzubauen. Das reicht aber nicht, Sie können auch Post senden und so z.B. Umfrageergebnisse durch Endlosschleifen und Dauer Posts zu Ihren Gunsten verändern.
Das Objekt kann über Microsoft.XMLHTTP instanziert werden. Ich empfehle aber die Verwendung des MSXML3 Parsers und eine Instanzierung über MSXML2.XMLHTTP bzw. das für den Server optimierte Objekt MSXML2.ServerXMLHTTP.
Falls es Probleme mit Timing gibt können diese über SetTimeOuts gesetzt werden. Dabei gibt es vier Parameter:
- resolveTimeout - Auflösen des Hostnamens
- connectTimeout - Verbinden mit dem Host
- sendTimeout - Senden eines Datenpaketes an den Server
- receiveTimeout - Empfangen eines Datenpaketes vom Server
Die Verbindung wird über Open geöffnet. Dabei geben als Parameter an
- HTTPKommando - POST/GET
- URL - die Url der überfallen Web Site
- Async - False lädt die Daten Synchron
Das cachen wird über den Send Befehl ausgelöst. Die Rückgabe enthalt die Website die in einen String gespeichert werden kann.
Function GetHTMLBin(strURL) Dim objXMLHTTP, strReturn Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP") objXMLHTTP.Open "GET", strURL, False objXMLHTTP.Send Cstr(Rnd()) GetHTMLBin = objXMLHTTP.responseBody Set objXMLHTTP = Nothing End Function |
Per Response.write können Sie diesen String dann in Ihre Seite einbauen.
Jetzt kommt der Punkt der mich zur Verzweiflung brachte:
Die Fehlermeldung:
msxml3.dll (0x80072EE7)
Der Servername oder die Serveradresse konnte nicht verarbeitet werden
Das Problem ist ein Proxy Server im Netz. Für MSXML gibt es extra ein Konfig Tool um diesem zu erklären, das es diesen Proxy Server verwenden soll. Zu saugen unter:
http://msdn.microsoft.com/msdn-files/027/001/468/Proxycfg.exe
Proxycfg -u lädt die Einstellungen des aktuellen Users aus dem Browser. Fast & Final Method!
Noch wilder ist das Posten in Formulare einer anderen Seite. Stichwort Umfrage Faken!
Dazu muss nur der Contenttype gesetzt werden, damit der Zielserver das Post auch verarbeiten kann.
Dim oHttp As Object Set oHttp = Server.CreateObject("Microsoft.XMLHTTP") oHttp.Open "POST","http://www.servername.com/registration.asp?ID=30", False false oHTTP.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded" oHttp.send |
Die Rückgabe kann weiterverwendet werden. Dies lässt sich auch Sinnvoll nutzen um Z.B. zwei Server Datenmäßig zu koppeln und einen automatischen Transfer von Informationen zu realisieren.
Der Autor distanziert sich von jeder Art des Gesetzesbruches und weist darauf hin, das Websites dem Urheberrecht unterliegen. Für eine Weiterverwendung von fremden Content ist auf jeden Fall die Einwilligung des Urhebers einzuholen.