Johannes Röckert: Eine andere Webpage auslesen

Beitrag lesen

So eine Sache hab ich auch mal gebraucht, allerdings <u>nicht</u>, um den Inhalt anderer Seiten zu klauen, sondern nur zwischen zwei Seiten "zu kommunizieren".

Dazu musst Du einen Socket aufbauen und zu dem Server wo die andere Seite liegt (z.B. www.irgendeineurl.de) connecten.
Dann wird der Header gesendet. Der typische Standartheader des MSIE5.0 sieht folgendermaßen aus:

GET /index.html HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: de
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)
Host: www.online.de
Proxy-Connection: Keep-Alive

Wichtig ist aber eigentlich nur die erste Zeile. Sie besteht aus der Übertragungsmethode (GET), gefolgt von dem Pfad der Datei und der http-spezifikation (1.0 wurde mehr für einfache Seitenabruf-Verfahren entwickelt, 1.1 eher für Streaming - doch das ist ein anderes Thema). Der Pfad ist dabei eigentlich nichts anderes als der Text, den man in der URL-Zeile des Browsers an die Adresse anhängen würde. In diesem Falle wäre der Header analog zur URL http://www.online.de/index.html . Natürlich können an den Pfad auch GET-Parameter angehangen werden, z.B. /index.html?bla=ja&hm=true . Die folgenden Headerinformationen kann man - je nach Webserver - auch weglassen.
Die Zeilen sollten durch ein \r\n getrennt werden. Am Ende schließt man den Header mit einer Leerzeile (\r\n\r\n) ab, wie es bei Headern allgemein üblich ist.

Hat man den Socket aufgebaut, kann man mit recv() die Seite empfangen.

Anschließend liegt sie in dem Buffer. Der Webserver kappt danach automatisch die Verbindung, was den Socket "invalid" macht, deswegen sollte man ihn danach sofort wieder schließen.

Genauere Informationen über Sockets findest Du auf http://www.perl.com.