Avatar billede frostholm Praktikant
16. september 2008 - 09:51 Der er 10 kommentarer og
1 løsning

winform program der logger ind på eksternt website via https

Hejsa alle sammen.

Jeg har nu forgæves forsøgt at finde nogle eksempler som kan afhjælpe mit lille problem. Jeg har ledt i 2 dage nu og prøvet en masse forskelligt, men intet ser ud til at virke.

Det jeg gerne vil, er at jeg har en winapp som skal kunne connecte/login på en website.

Siden er https:\\www.zenzuu.com, den har en iframe indeholdende login formen, som ligger på https:\\www.zenzuu.com\login\login.aspx

Efter login skal man bare læse siden https:\\www.zenzuu.com\myaccount\

når det er gjort skal der logges af igen.

Håber der er en der kan hjælpe med et eksempel på dette.

På forhånd mange tak
michael frostholm
Avatar billede arne_v Ekspert
16. september 2008 - 10:41 #1
Form baseret login kan godt vaere lidt tricky at faa til at virke, hvis det er en
.aspx side !

Jeg fik engang et eksempel til at virke. Men det er boevlet.
Avatar billede arne_v Ekspert
16. september 2008 - 10:41 #2
using System;
using System.IO;
using System.Net;
using System.Web;
using System.Text.RegularExpressions;

namespace E
{
    public class MainClass
    {
        public static string Get(string url, CookieContainer session)
        {
            HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
            wr.Method = "GET";
            wr.CookieContainer = session;         
            string html = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();
            return html;
        }
        public static string Post(string url, string fields, CookieContainer session)
        {
            HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
            wr.Method = "POST";
            wr.CookieContainer = session;         
            wr.ContentType = "application/x-www-form-urlencoded";
            StreamWriter post = new StreamWriter(wr.GetRequestStream());
            post.Write(fields);
            post.Close();
            string html = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();
            return html;
        }
        public static void Main(string[] args)
        {
            CookieContainer session = new CookieContainer();
            string first = Get("http://localhost/test.aspx", session);
            Console.WriteLine(first);
            string viewstate = HttpUtility.UrlEncode(Regex.Matches(first,"(?:<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\")([^\"]*)(\" />)")[0].Groups[1].Value);
            string eventvalidation = HttpUtility.UrlEncode(Regex.Matches(first,"(?:<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\")([^\"]*)(\" />)")[0].Groups[1].Value);
            Console.WriteLine(viewstate);
            Console.WriteLine(eventvalidation);
            string login = Post("http://localhost/Login.aspx?ReturnUrl=%2ftest.aspx",
                                "__EVENTTARGET=&__EVENTARGUMENT=&Login1%24UserName=supermand&Login1%24Password=hemmeligt&__VIEWSTATE=" + viewstate + "&Login1%24LoginButton=Log+In&__EVENTVALIDATION=" + eventvalidation, session);
            Console.WriteLine(login);
            string second = Get("http://localhost/test.aspx", session);
            Console.WriteLine(second);
        }
    }
}
Avatar billede frostholm Praktikant
16. september 2008 - 10:59 #3
jeg havde set det eksempel et andet sted, ændrede denne sektion til følgende :

string login = Post("https://www.zenzuu.com/login/login.aspx",
                                "__EVENTTARGET=&__EVENTARGUMENT=&LoginForm%24txtLoginEmailAddress2=rejsefyren@hotmail.com&LoginForm%24txtLoginPassword2=YYYYYYYY&__VIEWSTATE=" + viewstate + "&LoginForm%24LoginButton=Log+In&__EVENTVALIDATION=" + eventvalidation, session);
         
Men hvad med den del der heddder login button ? hvad skal det evt ændres til ?

YYYYYYYY er fiktivt password :-)
Avatar billede arne_v Ekspert
16. september 2008 - 11:10 #4
Navnet paa submit button.

Proev og snif hvad browseren sender naar du logger ind med den, saa kan du bedre se hvad der skal
sendes.
Avatar billede frostholm Praktikant
16. september 2008 - 11:17 #5
okay hvordan sniffer jeg så det ? Er lidt newbee når der kommer til dette emne
Avatar billede frostholm Praktikant
16. september 2008 - 12:09 #6
Fandt et sniffer program på google og kom frem til følgende parameter, er det dem der skal sættes sammen i den rigtige rækkefølge o login strengen.

__EVENTTARGET=
__EVENTARGUMENT=
__VIEWSTATE=/wEPDwUKLTk3MzM2NzkzNw9kFgICAQ9kFgICAQ9kFgQCAw8PFgIeB1Zpc2libGVoZGQCBw8PFgIfAGhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAgUNY2hrUmVtZW1iZXJNZQUMaW1nYnRuTG9naW4yNMsg3WeugS3W0lS3TyarQIJPZmk=
txtLoginEmailAddress2=rejsefyren@hotmail.com
txtLoginPassword2=YYYYYYYY
__EVENTVALIDATION=/wEWBQKqwYDcAgKQ3pDFBwKpne+SAwLC8qqaCgLHg4qlBIhI6wA9cTp6yhGYzPt3KGuB10Ss
imgbtnLogin2.x=70
imgbtnLogin2.y=11

password igen fiktivt
Avatar billede arne_v Ekspert
16. september 2008 - 12:13 #7
__VIEWSTATE og __EVENTVALIDATION aendrer sig fra gang til gang, saa dem skal du fiske
ud med en regex.
Avatar billede frostholm Praktikant
16. september 2008 - 13:04 #8
Jeg følgende fejl, efter jeg har forsøgt mig med koden.

     
Error!
> See below for the reason and possible suggestions

   
I'm sorry you have reached a general error page.


Possible Reasons For Receiving This Error

    * Using html characters such as < or > in a blog or comment post.
    * Your request has timed out in which case you need to try again later.



Er der noget sted man skal angive hvor længe en session eller cookie vare ?
Avatar billede arne_v Ekspert
16. september 2008 - 19:37 #9
Paa en eller anden maade maa dine requests adskille sig fra det browseren sender.

Studer hvad sniffer programmet finder for browser og for din app for begge requests
og se om du kan finde forskellen.
Avatar billede frostholm Praktikant
18. november 2010 - 11:35 #10
kan du ikke ligge et svar så jeg kan give point, prøver at rydde op i ulukkede spørgsmål. Tak for hjælpen
Avatar billede arne_v Ekspert
18. november 2010 - 15:07 #11
svar
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

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