Steffen Wawryniuk: get($url) -> aufgerufene Seite erstellt Cookie

Hallo Forumsgemeinde,

ich will per Perl eine Seite eines Anderen Servers auslesen

my $url = 'http://www.server.net/einscript.asp';
my $doc = get ($url) || &error($url);

jedoch will das Aufzurufende Script nen Cookie erstellen und überprüft des auch... und wenn es keinen Cookie erstellen konnte verweist das aufgerufene Script auf eine Fehlerseite und nicht die eigentliche seite auf die ich will

Gibt es hier ne möglichkeit das ich Den Cookie der erstellt werden soll über mein Script weiterleite an den Browser das es da erstellt werden kann (also des wird sicherlich net gehn... aber irgendwie sowas ähnliches)
so das ich an die Seite rankomme an die ich eigentlich wollte...

Ich hoffe Ihr versteht mein Problem.

Gruß
Steffen

  1. Gibt es hier ne möglichkeit das ich Den Cookie der erstellt werden soll über mein Script weiterleite an den Browser das es da erstellt werden kann (also des wird sicherlich net gehn... aber irgendwie sowas ähnliches)
    so das ich an die Seite rankomme an die ich eigentlich wollte...

    Ja, aber nicht mit LWP::Simple, dazu brauchst du z.b. LWP::UserAgent. Les mal in der Doku wie's geht.

    Struppi.

  2. Halihallo Steffen

    jedoch will das Aufzurufende Script nen Cookie erstellen und überprüft des auch... und wenn es keinen Cookie erstellen konnte verweist das aufgerufene Script auf eine Fehlerseite und nicht die eigentliche seite auf die ich will
    Gibt es hier ne möglichkeit das ich Den Cookie der erstellt werden soll über mein Script weiterleite an den Browser das es da erstellt werden kann (also des wird sicherlich net gehn... aber irgendwie sowas ähnliches)
    so das ich an die Seite rankomme an die ich eigentlich wollte...

    Das geht IMHO nicht über LWP::Simple. LWP::Simple ist eben nur für ein simples get
    zu gebrauchen, wie der Name schon sagt. Für Cookies und Authentication verwendet man
    LWP::UserAgent => HTTP::Request.

    lies dich hier ein:

    perldoc lwpcook
    perldoc LWP::UserAgent

    Viele Grüsse

    Philipp

    1. Hallo,

      erstemal Danke an Euch beiden...
      ich hab mir die Docus angeschaut und auchmal so per google gesucht.

      Ich bin ein großes Stück weiter

      Ich logge mich also nun per url in der Username und PW drin sind auf dem Server ein und er erstellt einen Cookie und gibt eigentlich eine Korrekte seite zurück...

      jedoch will ich ohne diese am bildschirm austzugeben gleich eine nächste Seite aufrufen zu der dieser Cookie nötig ist...

      jedoch bekomm ich das einfach nicht hin...
      ich stell mal kurz das Script hier dar...

      Evtl. kann mir ja doch nochmal wer helfen.

      ==================
      my $url = 'http://www.server.com/logon.asp?user=user&password=pass';

      my $ua = LWP::UserAgent->new;

      $ua->cookie_jar(HTTP::Cookies->new(file => "cookie.txt", autosave => 1));
      $ua->agent( "Explorer" );

      my $request = HTTP::Request->new(GET => $url);
      my $response = $ua->request($request);

      #Hier bin ich angemeldet und Cookie is eigentlich da

      $url = 'http://www.server.com/status.asp';

      $request = HTTP::Request->new(GET => $url);
      $response = $ua->request($request);

      jedoch erscheint hier wieder das ich nicht eingeloggt bin

      my $content = $response->content();
      print "Content-type: text/plain\n\n";
      print "$content";

      exit;

      =================================0

      Danke & Gruss
      Steffen

      1. Halihallo Steffen

        jedoch will ich ohne diese am bildschirm austzugeben gleich eine nächste Seite aufrufen zu der dieser Cookie nötig ist...

        Du sagst es ja selber, auf dieser Seite wird der Cookie benötigt, aber du sendest keinen
        mehr; das führt dann zur Fehlermeldung.

        $ua->cookie_jar(HTTP::Cookies->new(file => "cookie.txt", autosave => 1));
        $ua->agent( "Explorer" );

        Cookie wird gesendet, OK.

        my $request = HTTP::Request->new(GET => $url);
        my $response = $ua->request($request);

        jedoch erscheint hier wieder das ich nicht eingeloggt bin

        my $content = $response->content();
        print "Content-type: text/plain\n\n";
        print "$content";

        Content wird ausgegeben, OK.

        Aber: Beim zweiten Request _musst_ du den Cookie _nochmals_ senden.

        Viele Grüsse

        Philipp