HttpWebRequest Login

10/12/2012 22:31 anonymous-f4h279#1
Hi ihr,

ich habe mich nun mal an HttpWebRequest gewagt und versucht mich darüber auf Elitepvpers einzuloggen.

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            CookieContainer cookieCon = new CookieContainer();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.elitepvpers.com/forum/login.php?do=login");
            request.Method = "POST";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0";
            request.ContentType = "application/x-www-form-urlencoded";
            string post = "vb_login_username=EPVP_USERNAME&vb_login_password=EPVP_PASSWORT&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf=";
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] byteArr = Encoding.UTF8.GetBytes(post);
            request.ContentLength = byteArr.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArr, 0, byteArr.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string Quelltext = reader.ReadToEnd();
            if (Quelltext.Contains("Logout"))
            {
                MessageBox.Show("Eingeloggt!", "Login Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Nicht eingeloggt!", "Login Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Er sagt immer wieder, dass ich nicht eingeloggt bin, wo ist der Fehler? ;<
Regards,Drew
10/12/2012 22:52 Kraizy​#2
Ich sehe nirgends, dass du auf einen Meta-Refresh prüfst, d.h. du bist nach deinem Http Post immer noch auf der Redirect-Seite, also diese wo steht "Thank you for logging in..." und diese enthält so viel ich weiß kein "Logout". D.h. entweder rufst du danach einfach noch mal epvp.com/forum auf oder du machst es richtig, indem du die Redirect-URL ausliest und automatisch ein GET-Request abschicken lässt.
10/12/2012 23:32 boxxiebabee#3
Du solltest außerdem nicht den ganzen Quelltext auf "Logout" durchsuchen, was passiert wenn ein Thread im Titel "Logout" entählt? Das beste wäre wohl die Cookies zu durchsuchen nach einem eindeutigen Wert.
10/12/2012 23:39 anonymous-f4h279#4
Geht noch einfacher, in dem ich einfach im ersten request Abfrage ob im Quelltext der Inhalt aus der username Textbox vorhanden ist :p
10/12/2012 23:45 #SoNiice#5
Von wem kommt dieser Hinweis bloß? <(*-*)>
10/12/2012 23:49 Kraizy​#6
Quote:
Originally Posted by Drewfire View Post
Geht noch einfacher, in dem ich einfach im ersten request Abfrage ob im Quelltext der Inhalt aus der username Textbox vorhanden ist :p
Würde ich an deiner Stelle vermeiden
10/12/2012 23:55 anonymous-f4h279#7
Quote:
Originally Posted by Kraizy​ View Post
Würde ich an deiner Stelle vermeiden
Weshalb?
10/13/2012 00:42 Kraizy​#8
1. kann es wegen Sonderzeichen zu Problemen kommen und 2. kann es sehr wahrscheinlich sein, dass der Username, der in der TextBox steht, auch im Quelltext zu finden ist, aber nicht wirklich etwas mit dem Login bzw dem, wofür dein Request gemacht wurde zu tun hat.
Geeigneter ist es eher Stellen aus dem Quelltext zu nehmen, die sogut wie nur dann vorhanden sind, wenn man auch wirklich eingeloggt ist. z.B. if quelltext.contains("<h4>Log Out</h4>") (muss nicht unbedingt auf epvp so sein, wie gesagt ist nur ein Beispiel), aber das beste wäre sowieso, wie boxxiebabee bereits gesagt hat, die Cookies zu überprüfen.
10/13/2012 01:43 anonymous-f4h279#9
Hm, selbst wenn ich nach dem Inhalt der Textbox suche, sagt er, dass ich ausgeloggt bin ;O
10/13/2012 01:54 Kraizy​#10
Lass dir doch mal vom Debugger den Quelltext anzeigen und schau selbst, was dort so steht..
10/14/2012 10:16 anonymous-f4h279#11
Muss ich dafür den Quelltext auslesen lassen oder macht das der Debugger von selbst?
10/14/2012 10:46 Kraizy​#12
Sicher, dass du deinen Code nicht einfach irgendwo rauskopiert hast..?
Naja, Debug.Print(quelltext), oder du setzt nen Haltepunkt und kopierst den Wert deiner Variable selber raus.
10/14/2012 11:24 ЙôČhěάŧĪмPĞM#13
Nice but how use it please sorry i never use c#
10/14/2012 11:27 Kraizy​#14
Quote:
Originally Posted by ЙôČhěάŧĪмPĞM View Post
Nice but how use it please sorry i never use c#
You are not able to copy and paste the whole code into your project..? Well, ok.
@Drewfire [Only registered and activated users can see links. Click Here To Register...]
10/14/2012 12:44 boxxiebabee#15
Da ich grad Langeweile hatte hab ich dir kurz was zusammen gebastelt. Überprüft werden die Cookies :>

[Only registered and activated users can see links. Click Here To Register...]