Webseiten mit Cookie-Behandlung auslesen
Ralf
- php
Hallo,
ich habe den Bedarf, fremde Seiten per PHP zu lesen. Nun ist es so, dass der fremde Server mit Sessions arbeitet und für jede gelieferte Seite einen HTTP-Cookie setzt. Jedenfalls bekomme ich im Browser beim Aufruf jeder Seite einen Cookie gesetzt (habe testweise die Abfrage eingeschaltet).
Einige Seiten bekomme ich auch zu sehen, wenn ich den Cookie nicht annehme, aber bei anderen bekomme ich nur eine Fehlerseite, wenn ich den Cookie zuvor nicht akzeptiert habe. Ist auch logisch für mich und völlig ok.
Nun meine Frage: Wie schaffe ich es in PHP, dem fremden Server auch die Inhalte zu entlocken, die ich im Browser nur mit gesetztem Cookie bekomme?
Ich habe trotz einiger Suche weder im Web noch hier im Forum etwas dazu gefunden. Vielleicht fehlt mir nur das entscheidende Keyword, denn ich lande immer wieder beim Session-Handling für eigene Seiten (das kenne ich und setze es auch ein).
Ralf
Nun meine Frage: Wie schaffe ich es in PHP, dem fremden Server auch die Inhalte zu entlocken, die ich im Browser nur mit gesetztem Cookie bekomme?
Seiten direkt per HTTP abfragen, dabei Set-Cookie:-Zeile auslesen und bei der nächsten Anfrage entsprechende Cookie:-Zeile schicken. Das HTTP-Protokoll ist in RFC 2616, das Cookie-Protokoll in RFC 2109 beschrieben.
Einfacher wäre es möglicherweise, den betroffenen Seitenautor um die Daten zu bitten.
Seiten direkt per HTTP abfragen, dabei Set-Cookie:-Zeile auslesen und bei der nächsten Anfrage entsprechende Cookie:-Zeile schicken. Das HTTP-Protokoll ist in RFC 2616, das Cookie-Protokoll in RFC 2109 beschrieben.
Ich wollte eigentlich keine Grundlagenforschung betreiben ...
Mir würde schon ein Verweis auf ein Muster reichen, welches hinreichend erläutert ist. Oder eine Funktionsbibliothek, der ich dann nur noch die passenden Parameter übergeben muss. Sozusagen Lernen am praktischen Beispiel.
Einfacher wäre es möglicherweise, den betroffenen Seitenautor um die Daten zu bitten.
Es handelt sich um dynamisch erzeugte Inhalte.
Das HTTP-Protokoll ist in RFC 2616, das Cookie-Protokoll in RFC 2109 beschrieben.
Ich wollte eigentlich keine Grundlagenforschung betreiben ...
Wenn du nicht einmal ein ruhiges Stündchen hast, um die Grundlagen zu studieren, wird das wohl nix.
Einfacher wäre es möglicherweise, den betroffenen Seitenautor um die Daten zu bitten.
Es handelt sich um dynamisch erzeugte Inhalte.
Das bedeutet nicht unbedingt, dass diese Daten auf HTML und Cookies zur Übertragung angewiesen sind.
Vielleicht ist der Seitenautor ja sogar froh, wenn du nicht den ganzen HTML-Wust runterlädst, sondern dich mit den Rohdaten in reinem Textformat zufrieden gibst, womöglich fällt dann sogar der Bedarf eines Cookies weg oder man könnt ihn zumindest durch einen leichter zu handhabenden URL-Parameter ersetzen.
Ich wollte eigentlich keine Grundlagenforschung betreiben ...
Wenn du nicht einmal ein ruhiges Stündchen hast, um die Grundlagen zu studieren, wird das wohl nix.
Nur um Cookies für einen HTTP-Request zu setzen, muss ich mir das wohl nicht alles antun. Ich bin auch kaum der erste mit diesem Wunsch und suche eigentlich nur nach einer Lösung, wo ich neben der Adresse halt auch ein Cookie mitgeben kann (welches ich natürlich vorher mit einer entsprechenden Funktion erhalten haben muss).
Es handelt sich um dynamisch erzeugte Inhalte.
Das bedeutet nicht unbedingt, dass diese Daten auf HTML und Cookies zur Übertragung angewiesen sind.
Vielleicht ist der Seitenautor ja sogar froh, wenn du nicht den ganzen HTML-Wust runterlädst, sondern dich mit den Rohdaten in reinem Textformat zufrieden gibst, womöglich fällt dann sogar der Bedarf eines Cookies weg oder man könnt ihn zumindest durch einen leichter zu handhabenden URL-Parameter ersetzen.
Glaub mir einfach, dass das alles nicht in Frage kommt. Ich suche nach keiner Alternativlösung, sondern nach dem möglichst einfachen Weg, bei einem HTTP-Request auch ein Cookie mitgeben zu können.
Bisher habe ich gefunden, dass ich dafür mit fsockopen() anfangen und dann den ganzen HTTP-Request selbst zusammenbauen müsste. Ich stelle mir vor, dass es dafür vielleicht frei zugängliche Bibliotheken gibt, wo ich nur noch die Adresse und ein Cookie übergeben muss.
Wenn ich Auto fahren will, interessiert mich auch nicht die Funktionsweise des Motors.
Wenn ich Auto fahren will, interessiert mich auch nicht die Funktionsweise des Motors.
Man sollte aber schon wissen, dass das Lenkrad nicht zum Bremsen gedacht ist und die Räder üblicherweise auf die Straße gehören.
Wenn ich Auto fahren will, interessiert mich auch nicht die Funktionsweise des Motors.
Man sollte aber schon wissen, dass das Lenkrad nicht zum Bremsen gedacht ist und die Räder üblicherweise auf die Straße gehören.
Insbesondere wäre ein Führerschein (also die nötige Qualifikation) von Vorteil... ;-) SCNR
Gruß, Samoht
Wenn ich Auto fahren will, interessiert mich auch nicht die Funktionsweise des Motors.
Man sollte aber schon wissen, dass das Lenkrad nicht zum Bremsen gedacht ist und die Räder üblicherweise auf die Straße gehören.
Wenn ich die Funktionsweise eines Motors mit dem Aufbau von HTTP-Headern vergleiche, müsste ich Lenkrad, Bremse und Räder eher in den Bereich allgemeine Funktionalität von PHP einordnen. Und da bin ich zumindest so fit, dass ich mich erfolgreich mit dem Session-Handling befasst habe. Ich kenne mich auch mit header() und setcookie() aus, soweit es um die Übertragung an den Client geht. Für header() muss ich mir keine RFC durchlesen, wenn ich nur ganz bestimmte Informationen setzen will. Ebenso wenig für setcookie().
Das hilft mir aber in diesem Fall nicht. Und selbst wenn ich die genannten RFC durchgehen würde, wüsste ich danach etwas über den Aufbau. Wie das dann konkret in PHP umzusetzen ist, wäre mir immer noch nicht bekannt.
Vielleicht hätte ich dazu schreiben sollen, dass ich mich bisher nur mit lokaler Dateiverarbeitung befasst habe. Zwar kann ich eine externe Seite mit fopen() einlesen, aber wenn die ein Cookie haben will, reicht das eben nicht.
Ich habe aber etwas weiter gesucht und bin auf folgende Seite gestoßen:
http://www.pc-professionell.de/tipps/netzwerke/article20060414003.aspx
Dort sind 3 verschiedene Möglichkeiten genannt und offensichtlich wird für keine davon die Kenntnis über den Aufbau des HTTP vorausgesetzt. Auf der Basis der dort erwähnten Funktionen werde ich wohl weiter kommen.
Etwas in dieser Art hatte ich mir hier erhofft und nicht den Verweis auf Grundlagen des Internets oder den Rat, mir die Infomationen beim Betreiber auf andere Weise zu besorgen.