[Java] Algo um Cookie zu finden!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von unix, 18. Februar 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 18. Februar 2010
    Algo um Cookie zu finden!

    Hey, arbeite grad an nem Lockerz Bot,

    Hab jetzt aber das Problem, dass Lockerz (denk mal aus Sicherheitsgründen) deren cookie einige male überschreibt!!

    Siehe hier:
    Die Response Headers wenn man sich einloggt:

    Wie man sieht, wird der cookie "lockerz" 3 mal überschrieben!
    Der zu nutzende cookie ist immer der letzte!

    Und es wird unterschiedlich oft überschrieben!

    Mein Algo, soll aus den Headers, jeweils den letzten cookie raussuchen!

    Ist eig. einfach, aber etwas funzt nich!:

    Code:
     int zero = 0;
     int index1= 0;
     while (true){ // ja ich weiß Endlosschleifen sind scheiße ^^
     int index = headers.indexOf("lockerz",zero);
     if (index == -1){ // Wenn keine Position mit dem gesuchten String kommt, wird ne -1 übergeben
     break;
     }
     zero = index+1; //Das nächste mal soll direkt nach dem ersten Cookie weiter gesucht werden!
     index1 = index; // Der letzte cookie wird in ner neuen Variable gespeichert, für den fall das er auch wirklich der letzte war!!!
     }
     int index2 = headers.indexOf(";",index1);
     lockerzcookie = headers.substring(index1,index2);
    
    So die Funktion:

    Code:
    zero = index+1;
    Damit der den nächsten Cookie sucht, funzt nich!!!

    zero ist beim debuggen immer die Position des ersten Cookies!!!

    Also der fängt von 0 an zu suchen, der erste Cookie ist bei 119!

    Und die Variable zero bleibt immer auf 119, obwohl es ja 119+1 sein sollte!!!

    Hat einer ne Idee?
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 18. Februar 2010
    AW: Algo um Cookie zu finden!

    Weiß jetzt nicht wo bei dir Fehler ist, da es in Ordnung aussieht.

    Aber wieso benutzt du nicht einfach public int lastIndexOf(String str) , wäre doch viel einfacher.

    Mfg Rushh0ur
     
  4. #3 18. Februar 2010
    AW: Algo um Cookie zu finden!

    Code:
     int zero = 0;
     int index1= 0;
     while (true){ // ja ich weiß Endlosschleifen sind scheiße ^^
     int index = headers.indexOf("lockerz",zero+1);
     if (index == -1){ // Wenn keine Position mit dem gesuchten String kommt, wird ne -1 übergeben
     break;
     }
     zero = index; //Das nächste mal soll direkt nach dem ersten Cookie weiter gesucht werden!
     index1 = index; // Der letzte cookie wird in ner neuen Variable gespeichert, für den fall das er auch wirklich der letzte war!!!
     }
     int index2 = headers.indexOf(";",index1);
     lockerzcookie = headers.substring(index1,index2);
    
    Seh da eig auch keinen Fehler, aber vl geht es ja so:

    int index = headers.indexOf("lockerz",zero+1);
    bzw int index = headers.indexOf("lockerz",++zero);

    aber ich würde Rushh0ur zustimmen, machs lieber mit lastIndexOf das wäre schöner/einfacher!
     
  5. #4 18. Februar 2010
    AW: Algo um Cookie zu finden!

    Danke,

    hab die Methode gar nich gekannt lastIndexOf() :D

    Die nutz ich jetzt und es klappt alles!!!

    THX
     
  6. #5 18. Februar 2010
    AW: Algo um Cookie zu finden!

    pseudo code:
    Code:
    string responseHeader = "...";
    string[] cookieTokens;
    
    for each(string token in responseHeader.split("\r\n")) {
     if(token.substr(0, token.indexOf(":") -1) == "Set-Cookie")
     cookieTokens[] = token.substr(token.indexOf(":"), token.length);
    }
    
    //lokerz-cookie ausfindig machen:
    hash lockerzCookie<string, scalar>;
    for each(string cookie in cookieTokens) {
     string[] split = cookie.split(";");
     
     for(int i = 0, l = split.length(); i < l; ++i) {
     string[] split2 = split[i].split("=");
     
     if(split2[0] == "lockerz") {
     string data = split2[1];
     
     //jetzt noch expire und path
     int expire = 0;
     string path = "/";
     
     string next = split[++i].split("=");
     if(next[0] == "expire") {
     expire = new Date().setGMTTime(next[1]).getTime();
     next = split[++i].split("=");
     } else {
     --i;
     goto save_data;
     }
     
     if(next[0] == "path") {
     path = next[1];
     } else {
     --i;
     goto save_data;
     }
     
     save_data:
     lockerzCookie["data"] = data;
     lockerzCookie["expire"] = expire;
     lockerzCookie["path"] = path;
     }
     }
    }
    
    //jetzt kannst du mit "lockerzCookie" weiterarbeiten
    
    
    
     

  7. Videos zum Thema
Die Seite wird geladen...