Avatar billede Mcoroklo Nybegynder
04. oktober 2010 - 00:04 Der er 7 kommentarer og
1 løsning

WebRequest , korrekte headers og holde på session

Hej,

Jeg er i gang med at lave et lille hjælper-program til et nichespil.. Jeg har kæmpet med det hele aftenen, og har fået rigtig meget hjælp af gamle tråde her på eksperten (tak Arne)..!

MEN! Jeg er løbet ret tør nu.. Det er sådan at jeg skal følgende:
- Gå ind på en hjemmeside
- Logge ind med mit brugernavn / password
- Navigere rundt på siden

Jeg har lavet følgende indtil videre (jeg forklarer problemet i bunden):

- - - - -

var cookieJar = new CookieContainer();
           
            string url = "http://server1.online-trucker.dk";

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
           
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.AllowAutoRedirect = true;
            req.CookieContainer = cookieJar;

            StreamWriter post = new StreamWriter(req.GetRequestStream());
            post.Write("Username=BRUGERNAVN&Password=PASSWORD&Logind=Logind");
            post.Close();
         
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
           
            // New request
            string auctionurl = "http://server1.online-trucker.dk/Vareauktion.asp";
            req = (HttpWebRequest)WebRequest.Create(auctionurl);
            req.CookieContainer = cookieJar;
           
            req.Referer = "http://server1.online-trucker.dk/index.asp";
            req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3";
            req.Accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
            req.Headers.Add("Accept-Language", "da-DK");
            req.Headers.Add("Accept-Encoding", "gzip, deflate,sdch");
            req.Headers.Add("Accept-Charset", "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n");
            req.Headers.Add("Cache-Control", "max-age=0");

            resp = (HttpWebResponse)req.GetResponse();

            string kage2 = GetContentFromStream(resp.GetResponseStream());

- - - - - -

Jeg har via et sniffer værktøj prøvet at matche alle headers, og jeg er ved at være der.

Jeg gemmer min session som siden giver mig i min "CookieJar". Der er dog følgende forskel på cookies, alt efter om jeg bruger mit program eller en rigtig browser:

REAL: ASPSESSIONIDSCRAASDB=EFFBFPEAKOBJGLAPNABPLLCB; passes=15; ChatCannel=1

PROGRAM: ASPSESSIONIDSCRAASDB=KPGBFPEAHNDLENDEOAEELMPJ


Når jeg går ind på en side med ovenstående headers samt PROGRAM cookien, så reagerer den som om at jeg IKKE er logget ind..

Jeg er ret lost!

Thanks..
Avatar billede janus_007 Nybegynder
04. oktober 2010 - 00:56 #1
Du mangler passes og ChatCannel.

Hvad gør WebRequest ved en redirect? Jeg er ikke helt sikker, men det er muligt du skal håndtere den.
Avatar billede arne_v Ekspert
04. oktober 2010 - 04:11 #2
Skal du ikke også sende alle de headers med login requestet??
Avatar billede Mcoroklo Nybegynder
04. oktober 2010 - 08:22 #3
Ah, MANGE tak for begge tips..

Jeg skriver lige når jeg har fået kigget på det (nok senest tirsdag/onsdag) ! :-)
Avatar billede Mcoroklo Nybegynder
04. oktober 2010 - 09:32 #4
Jeg har nu kigget på begge jeres forslag.

Passes og ChatCannel:
Hvordan får jeg dem med? Jeg har ingen ide.. Jeg gemmer jo min cookie i den jar som jeg viser foroven! :-)

Redirect:
Jeg har kigget på den statuskode som der kommer som response (OG set allow redirect til false). Der kommer på intet tidspunkt en statuskode som redirecter, men kun et "OK" respons.

Headers på login requests:
Det er nu gjort, men ingen forskel på resultatet.
Avatar billede janus_007 Nybegynder
04. oktober 2010 - 10:46 #5
Fiddler viser om der er redirects :)

Prøv at chekke helt præcist cookie indholdet når du bruger dit eget kontra en browser.

Prøv at slette alle cookies og gå direkte på den side der... du har måske været på siden før?
Avatar billede Mcoroklo Nybegynder
04. oktober 2010 - 13:48 #6
Sådan! Så virker det! :-)

Jeg måtte ind og manipulere med cookien manuelt.. Kopierede indholdet fra snifferen.

(for andre som ser tråden og skal have hjælp, send mail til mcoroklo@gmail.com).

Og til dig Janus .. Du får lige point! :-) Det var det som hjalp mest..
Avatar billede Mcoroklo Nybegynder
04. oktober 2010 - 13:49 #7
+ Mange, mange, mange tak for hjælpen!
Avatar billede janus_007 Nybegynder
04. oktober 2010 - 20:48 #8
Super, godt du fandt ud af det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester