Velena Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 (endret) Programmet jeg nevnte i forrige tråd har som mål å lese av informasjon på en internettside som bruker HTTPS, mer spesifikt It's Learning. Ifølge en artikkel jeg leste kunne jeg bruke Fiddler til å finne ut hvilken informasjon som måtte være i inloggingsformen for at en internettside skulle godta inloggingsforsøk. Men når jeg leste det som sto om hvordan jeg finner dette i HTTPS sider ble jeg mer usikker på om dette vil fungere, det står nemlig at Fiddler på dette tidspunkt ikke kan generere HTTPS requests. I tillegg er den eneste måten (som er nevnt på siden) du kan overvåke informasjonen som blir sendt i en request til en HTTPS side ikke noen god idè: Q: Can I reconfigure my Windows client to trust the bogus root to avoid error messages and enable logon to services like Passport? A: Yes, although this is not a recommended configuration. You should never make this configuration change on a non-Test machine. Spørsmålet er da: Kan jeg komme inn på min itslearning bruker ved hjelp av HttpsWebRequest og den rette inloggingsformen? Edit: Skrivefeil. Endret 30. juli 2008 av Velena Lenke til kommentar
trtrtr Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 fiddler2 håndterer https bra, men det er mulig du må enable det i options. Se under "session inspector" -> webforms, der har vi form datas som ble POST'et/GET'et.. Under ”textview” (ved siden av webforms) har vi QUERY STRING for request. Denne kan vi ofte bruke DIREKTE, som GET request, selv om FORM på siden benytter POST (bare mate inn våre egne parameter verdier). Lenke til kommentar
j000rn Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 Ja, eller enda enklere med WebClient. Istedenfor å bruke Fidler er det ofte like greit å bare bruke view source i IE/Fx for å se hva som blir sendt frem og tilbake. TamperData i Fx er også et genialt plugin for dette. Lenke til kommentar
Velena Skrevet 30. juli 2008 Forfatter Del Skrevet 30. juli 2008 (endret) fiddler2 håndterer https bra, men det er mulig du må enable det i options. Se under "session inspector" -> webforms, der har vi form datas som ble POST'et/GET'et.. Under ”textview” (ved siden av webforms) har vi QUERY STRING for request. Denne kan vi ofte bruke DIREKTE, som GET request, selv om FORM på siden benytter POST (bare mate inn våre egne parameter verdier). Har sett litt på dette nå, fant requesten som inneholdt inloggingsinformasjonen, men i textveiw kommer det opp som flere hundre linjer med uforståelig kode. Er dette meningen? Edit: jorn79: Når det gjelder WebClient / HttpWebRequest følger jeg bare rådet fra artikkelforfatteren som sa at det ville være enklere å benytte HttpWebRequest ettersom det håndterer informasjonskapsler på en bedre måte. Edit 2: Ser dette bra ut? POST data: "_VEIWSTATE0={0}language=0&Login$site$input={1}&Login$username$input={2}&Login$password$input={3}Login$loginbtn=Logg på&__EVENTVALIDATION={4}", veiwState, networkID, username, password, validation Endret 30. juli 2008 av Velena Lenke til kommentar
Manfred Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 WebClient er ikke noe særlig på kaker, nei... Det stemmer... Lenke til kommentar
trtrtr Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 heh, uforståelig kode..Det er vel session sakene til .net (viewstate etc) som tar mye plass. de må du vel trekke ut og mate tilbake idet du poster.. men dersom du ser der jeg nevnte i forrige post, så har du det du trenger: form input navn og deres verdier som ble sendt inn idet du forsøkte å logge deg inn: __EVENTTARGET __EVENTARGUMENT __VIEWSTATE0 /wE... __VIEWSTATE language 0 Login$site$input -1 Login$username$input user Login$password$input password Login$loginbtn Logg på __EVENTVALIDATION /wEWogYC/q2g6QIC/OSqkAsC4+SqkA... Lenke til kommentar
aadnk Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 WebClient er ikke noe særlig på kaker, nei... Det stemmer...Åh? I beg to differ: using System.Net; public class WebClientEx : WebClient { public CookieContainer Cookies { get; set; } public WebClientEx() {Cookies = new CookieContainer();} // Subclass method and catch the request to be used protected override WebRequest GetWebRequest(Uri address) { // Let the underlying layer handle most of the work WebRequest request = base.GetWebRequest(address); if (request is HttpWebRequest) { { // Decomment if you expericence 417 errors (.NET dosen't handle POST request very well) //((HttpWebRequest)request).ProtocolVersion = HttpVersion.Version10; ((HttpWebRequest)request).CookieContainer = Cookies; } } return request; } } Lenke til kommentar
Velena Skrevet 30. juli 2008 Forfatter Del Skrevet 30. juli 2008 Må jeg inkludere__EVENTTARGET, __EVENTARGUMENT og de andre parameterne som ikke har noen verdi? Lenke til kommentar
Manfred Skrevet 30. juli 2008 Del Skrevet 30. juli 2008 aadnk: Men der lager du en wrapper for å ta seg av bakingen. Man har bedre kontroll på hva som skjer med HttpWebRequest og HttpWebResponse. Måtte selv gå over til å bruke dette i noen services på jobb, når jeg kranglet litt med encoding... WebClient har en lei tendens til å legge på UTF8 hvis jeg mener at den ikke skal encode stringen, osv... Blir ikke så mange flere kodelinjene heller. Lenke til kommentar
Velena Skrevet 1. august 2008 Forfatter Del Skrevet 1. august 2008 (endret) Sitter litt fast på å dra ut veiwstate verdien på siden. Hver gang jeg prøver å få kildekoden gir VS meg en WebException med tilleggsinformasjonen: "Error 500, intern serverfeil"(Hvis jeg fjerner try/catch så klart). Dette er koden jeg brukte: HttpWebRequest webRequest = WebRequest.Create("https://www.itslearning.com/index.aspx") as HttpWebRequest; try { StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());//Her går det galt...... string responseData = responseReader.ReadToEnd(); responseReader.Close(); MessageBox.Show(responseData); } catch { MessageBox.Show("An error occured."); } Har funnet ut at det er webRequest.GetResponse(); som kaster unntaket. Det går helt fint å bruke den samme koden på både diskusjon.no og start, så jeg har det for meg at problemet ligger i siden til It's Learning. Noen som vet hva jeg kan gjøre for å løse dette? Endret 1. august 2008 av Velena Lenke til kommentar
j000rn Skrevet 1. august 2008 Del Skrevet 1. august 2008 Det er nok fordi du sender feil info i request'n. Bruk fiddler for å se om du finner forskjellen i det programmet ditt sender og hva som skjer med en vanlig browser. Lenke til kommentar
Velena Skrevet 1. august 2008 Forfatter Del Skrevet 1. august 2008 (endret) Jeg tror du må ha misforstått. Jeg sitter fast på trinnet før det du nevner, nemlig å samle informasjonen(veiwstate) som skal være i formen. Det jeg ville vite var hvorfor programmet gir meg et unntak når jeg prøver å få kildekoden til itslearning, mens det fungerer helt fint med sider som start.no og diskusjon.no. Edit: Skrivefeil. Endret 1. august 2008 av Velena Lenke til kommentar
j000rn Skrevet 2. august 2008 Del Skrevet 2. august 2008 Jeg tror du må ha misforstått. Jeg sitter fast på trinnet før det du nevner, nemlig å samle informasjonen(veiwstate) som skal være i formen. Det jeg ville vite var hvorfor programmet gir meg et unntak når jeg prøver å få kildekoden til itslearning, mens det fungerer helt fint med sider som start.no og diskusjon.no.Edit: Skrivefeil. Som sagt.... se hva som er forskjell på hva en vanlig browser sender og hva programmet ditt sender..... Lenke til kommentar
Velena Skrevet 2. august 2008 Forfatter Del Skrevet 2. august 2008 (endret) Ah, trodde ikke at det var noe annet jeg måtte spesifisere i requesten enn selve formen. Det eneste jeg kan se som er ulikt er at jeg ikke sender de samme headerne i requesten? Sender jeg dem som jeg ville sendt formen? Edit: fant ut at WebRequest har en egen property for headere. Endret 2. august 2008 av Velena Lenke til kommentar
Velena Skrevet 4. august 2008 Forfatter Del Skrevet 4. august 2008 (endret) Jeg har også et spørsmål som ikke er direkte relatert til emnet: Hvordan kan jeg vite hvilken kontroll jeg høyreklikket før jeg valgte et alternativ i en contextmeny hvis flere kontroller bruker den samme contextmenyen? Edit: Skrivefeil. Endret 4. august 2008 av Velena Lenke til kommentar
Velena Skrevet 4. august 2008 Forfatter Del Skrevet 4. august 2008 Prøvde å se om det virket, men når jeg bruker denne koden gir den meg ikke det jeg leter etter: countdownLblRClick = 0; ............... private void CountdownLbl1_MouseDown(object sender, MouseEventArgs e) { if (e.Button.ToString() == "Right") { countdownLblRClick = 1; } } ......................Flere Mousedown event handlere for de andre labelene................. private void removeToolStripMenuItem_Click(object sender, EventArgs e) { switch (countdownLblRClick) { case 1: CountdownLbl1.Text = "."; break; case 2: CountdownLbl2.Text = "."; break; case 3: CountdownLbl3.Text = "."; break; case 4: CountdownLbl4.Text = "."; break; case 5: CountdownLbl5.Text = "."; break; default: break; } } } Lenke til kommentar
trtrtr Skrevet 4. august 2008 Del Skrevet 4. august 2008 Velena, fikk du logget deg på siten? Post koden, sikkert flere som har bruk for den. Lenke til kommentar
Velena Skrevet 4. august 2008 Forfatter Del Skrevet 4. august 2008 Nei, har dessverre ikke det =/. Lenke til kommentar
Velena Skrevet 24. august 2008 Forfatter Del Skrevet 24. august 2008 Hadde lagt dette på is en stund, men så på det igjen idag. Jeg la merke til noe interressant i den andre requesten fra nettleseren, hvor den sender denne headeren: Cookie: ASP.NET_SessionId=cbitcairqte0pd45j4oota55;sModule= digexguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628 &itsguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628&aiccguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628 &pool=yotta Kan noen forklare hvor jeg kan finne verdiene til disse headerne og om de er nødvendige for å komme inn på siden? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå