Umgang mit Session IDs

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von maceis, 21.03.2006.

  1. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    hallo zusammen,

    ich arbeite an einem Skript (Perl), mit dem ich aus meinem GMX Account bestimmte Informationen herunterladen möchte.

    Bei GMX wird offensichtlich mit Session IDs gearbeitet, die nach dem Einloggen in schönster GET Manier an bestimmte Links angehängt werden (?sid=...), nämlich an diejenigen, welche einen eingeloggten Benutzer zu seinen "persönlichen" Informationen bzw Konfigurationsseiten bringen sollen.
    Die Seiten werden also dynamisch generiert und die Session ID ist (natürlich) jedesmal unterschiedlich.

    Die Frage ist nun:
    Wie kommt mein Skript an die jeweilige Session ID?
    Muss ich tatsächlich jedesmal die vom Server ausgelieferte Webseite parsen?

    Ich fürchte fast, das muss ich, aber vielleicht gibt es noch einen anderen Ansatz, den ich bisher nicht sehe.
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    SessionIDs sollen ja gerade zufällig sein! Wenn Du einen Algorithmus zu deren Berechnung im Voraus kennst, sag mir bescheid :)
     
  3. moses_78

    moses_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    Ich kenne mich mit Perl überhaupt nicht aus, aber könntest du nicht die Login-
    Daten an das Script senden, das das Formular auswertet, und dann den Header
    auslesen, den dieses Script ausgibt? Dort steht dann eben die URL mit der
    Sessionid, zu der der Browser umgeleitet würde...

    Oder meintest du exakt dies mit "parsen"?
     
    Zuletzt bearbeitet: 21.03.2006
  4. Incoming1983

    Incoming1983 MacUser Mitglied

    Beiträge:
    7.597
    Zustimmungen:
    1
    MacUser seit:
    23.07.2005
    include die cgi.pm, dort kannst du mit "param" evtl. ganz einfach auf die Session ID zugreifen.
     
  5. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    @wegus
    Das ist mir schon klar.
    Ich wollte sie ja auch nicht selbst berechnen, sondern dachte, es gibt vielleicht eine intelligente Methode, wie man die "abgreifen" kann ;).

    @moses
    So ähnliches hatte ich mir das gedacht.
    Muss ich glatt mal ausprobieren.

    @incoming
    CGI.pm ist rießig, das möchte ich eigentlich nicht laden müssen.
    Abgesehen davon hat das einen völlig anderen Anwendungszweck.

    ----

    Das Skript ist übrigens schon weitgehend fertig. Die Session ID hole ich mit einem Patternmatching aus der (Zwischen-)Ergebnisseite.

    Es fehlt nur noch der Teil, der aus der Ergebnisseite in html (mein "DSL-Telefonie Verbindungsprotokoll") die einzelnen Verbindungen zeilenweise in eine Textdatei herauszieht.
    Diese Textdatei kann ich dann mit einem kleinen awk Skript weiterverarbeiten und erhalte am Ende eine Aufschlüsselung der Kosten nach Rufnummern (wahlweise auch nach Tagen oder beides).

    Etwas überraschendes ist mir noch aufgefallen:
    Mein Skript meldet sich ja nicht mehr aus meinem Account ab.
    Trotzdem erhalte ich danach beim normalen Einloggen via Browser nie diese alberne Warnung, dass man die Seite nur über den "Logout" button verlassen soll.
    Keine Ahnung warum.
     
  6. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Mit parsen meinte ich durcharbeiten und analysieren. Wäre natürlich wesentlich eleganter nur die Header zu "parsen" als die ganze Seite mit. Das gilt um so mehr, als man nicht nur die SID braucht, sondern auch die "Nummer" des Servers, der die Anfrage bearbeitet (www093.gmx.net/...)

    Dein Vorschlag ist sehr gut, nur führt er in diesem Fall zu zusätzlichen Schwierigkeiten, da GMX offensichtlich mehrmals weitereleitet.
    Bei der ersten Weiterleitung bekommt man die Sesssion ID noch nicht :(.

    Macht aber nicht wirklich was, da ich die erforderlichen Daten dann eben aus der html Antwort hole. Ich werde mir den Ansatz trotzdem merken.
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    hm, da war der Wegus wohl kapiergeschützt :p

    Dafür kenn ich mich in Perl zu schlecht aus...
     
  8. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das hat mit Perl wenig zu tun (eigentlich gar nichts).
    Da gibt es eine Client Anwendung und einen Server, die über HTTP kommunizieren.
    Der Client sendet "Anfragen" an den Server.
    Alles was daraufhin der Server an den Client schickt, kann dieser lesen und auswerten.
     
  9. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    ist mir schon klar, aber z.B. PHP kapselt das sehr nett und man kann mit PHP recht leicht auf die SESSION-ID zugreifen. Auch Java-Servlets zerlegen die HTTP-Requests meist schon mundgerecht. Wie das nun bei Perl geht, der Mutter aller Web-Scriptsprachen, weiß ich eben nicht. Ich denke nicht, daß man das zu Fuß machen muß!
     
  10. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ja?
    Wie könnte das denn in PHP aussehen?
    Ich kann mir im Augenblick nicht vorstellen, wie das in PHP wesentlich anders gehen sollte - mal ganz abgesehen davon, dass ich ein solches Skript nicht unbedingt in PHP schreiben wollen würde, obwohl es natürlich bestimmt möglich wäre.
    Eigentlich geht es ja weniger um die Requests als um die Antworten des Servers.
    Muss man auch nicht. In diesem Fall empfinde ich es zu Fuß einfacher, weil ich mich dann nicht zu Fuß um die diversen redirects kümmern muss, um genau an der passenden Weiterleitung den passenden Header herauszuziehen.
     
Die Seite wird geladen...

Diese Seite empfehlen