Login mit HTTPRequest

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Gutelaunetyp.

    Login mit HTTPRequest

    Hallo,

    ich hab schon sehr viel im Internet gegooglet und auch hier im Forum einige Dinge gefunden, die mir die ersten Schritte vereinfacht haben. Jetzt stehe ich aber auf dem Schlauch und bräuchte eure Hilfe: Ich mächte mich über meine Anwendung bei http://rockz.comanmelden. Dafür habe ich mir folgenden Code geschrieben:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim user = "piii", pwd = "laxasusu" 'Nur ein Testaccount
    2. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://rockz.com/login"), HttpWebRequest)
    3. Request.Method = "POST"
    4. Request.ContentType = "application/x-www-form-urlencoded"
    5. Request.Headers.Add(HttpRequestHeader.Host, "rockz.com")
    6. Request.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)")
    7. Request.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    8. Request.Headers.Add(HttpRequestHeader.AcceptLanguage, "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3")
    9. Request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")
    10. Request.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8;q=0.7,*;q=0.7")
    11. Request.Headers.Add(HttpRequestHeader.KeepAlive, "300")
    12. Request.Headers.Add(HttpRequestHeader.Connection, "keep-alive")
    13. Request.Headers.Add(HttpRequestHeader.Referer, "http://rockz.com/")
    14. Request.Headers.Add(HttpRequestHeader.Cookie, "Cookywerte aus dem Headermitschnit siehe unten")
    15. Dim Post As String = "do=login&ref=&name=" & user & "&password=" & pwd
    16. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    17. Request.ContentLength = byteArray.Length
    18. Dim DataStream As Stream = Request.GetRequestStream()
    19. DataStream.Write(byteArray, 0, byteArray.Length)
    20. DataStream.Close()
    21. Dim Response As HttpWebResponse = Request.GetResponse()
    22. DataStream = Response.GetResponseStream()
    23. Dim reader As New StreamReader(DataStream)
    24. Dim ServerResponse As String = reader.ReadToEnd()
    25. reader.Close()
    26. DataStream.Close()
    27. Response.Close()
    28. If InStr(ServerResponse, "Meine Profilseite") Then
    29. MessageBox.Show("Login OK")
    30. Else
    31. MessageBox.Show("Login nicht OK")
    32. End If


    Hier noch der Headermittschnitt:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
    2. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    3. Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    4. Accept-Encoding: gzip,deflate
    5. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    6. Keep-Alive: 300
    7. Connection: keep-alive
    8. Referer: http://rockz.com/
    9. Cookie: cookywert
    10. Content-Type: application/x-www-form-urlencoded
    11. Content-Length: 41
    12. do=login&ref=&name=Piii&password=laxasusu
    13. HTTP/1.1 302 Found
    14. Transfer-Encoding: chunked
    15. Content-Type: text/html; charset=utf-8
    16. Cache-Control: no-cache
    17. Set-Cookie: cookywert
    18. Set-Cookie: cookywert
    19. Set-Cookie: cookywert
    20. Set-Cookie: cookywert
    21. Location: /my
    22. Content-Encoding: gzip
    23. Vary: Accept-Encoding
    24. Date: Wed, 17 Feb 2010 13:24:33 GMT
    25. Server: lighttpd
    26. ----------------------------------------------------------
    27. http://rockz.com/my
    28. GET /my HTTP/1.1
    29. Host: rockz.com
    30. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
    31. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    32. Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    33. Accept-Encoding: gzip,deflate
    34. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    35. Keep-Alive: 300
    36. Connection: keep-alive
    37. Referer: http://rockz.com/
    38. Cookie: cookywert
    39. HTTP/1.1 200 OK
    40. Transfer-Encoding: chunked
    41. Content-Type: text/html; charset=utf-8
    42. Cache-Control: no-cache, no-store
    43. Pragma: no-cache
    44. Content-Encoding: gzip
    45. Vary: Accept-Encoding
    46. Date: Wed, 17 Feb 2010 13:24:34 GMT
    47. Server: lighttpd


    Wie bereits oben erwähnt habe ich mich an Codebeispielen aus diesem Forum gehalten, aber dennoch bekomme ich kein Ergebnis. Das Programm reagiert bei einem Button-Klick nicht und stürzt ab. Ich erhalte keine Fehlermeldung, sondern land nur im Visual Studio :/

    Ich würde mich über eine Antwort freuen :)
    An welcher Stelle stürzt es denn genau ab?
    Habs mal eben selbst ausprobiert: Es liegt daran, dass man die Header so nicht setzen kann. Ich weiß gerade nicht, wie man es machen muss, aber da hilft sicher das Forum oder Google weiter. Und dann musst du noch ein "ServicePointManager.Expect100Continue = False" einfügen, sonst liefert der Server den Fehler 417.
    Allerdings scheint der Login noch nicht zu gehen, das immer "Login nicht OK" angezeigt wird. Da müsstest du dann nochmal schauen.

    P.S.: Komischerweise habe ich im Visual Studio gleich den Fehler angezeigt bekommen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ultimator“ ()

    Hallo,



    bekomme auch immer eine Fehlermeldung, dass keine Cookies akzeptiert werden.


    VB.NET-Quellcode

    1. Dim Post As String = "ws_user=" & TextBox1.Text & "&pwd=" & TextBox2.Text & "&login.x=0" & "&login.y=0"
    2. leseite.Method = "POST"
    3. leseite.ContentType = "application/x-www-form-urlencoded"
    4. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    5. leseite.ContentLength = byteArray.Length
    6. Dim DataStream As Stream = leseite.GetRequestStream()
    7. DataStream.Write(byteArray, 0, byteArray.Length)
    8. DataStream.Close()
    9. Dim Response As HttpWebResponse = leseite.GetResponse()
    10. DataStream = Response.GetResponseStream()
    11. Dim reader As New StreamReader(DataStream)
    12. Dim ServerResponse As String = reader.ReadToEnd()
    13. reader.Close()
    14. DataStream.Close()
    15. Response.Close()
    16. MsgBox(ServerResponse)
    17. If InStr(ServerResponse, "Erfolgreich angemeldet") ThenMessageBox.Show("Login OK")
    18. ElseMessageBox.Show("Login nicht OK")
    19. End If


    Hab es auch schon mit:

    VB.NET-Quellcode

    1. leseite.Headers.Add(HttpRequestHeader.Cookie, "ws_session")
    2. cookies2.Add(New Uri("http://www.cod4-gamers.de/checklogin.php"), New Cookie("ws_session", 1234))

    probiert, aber ohne Erfolg.

    Wäre super, wenn jemand ne Lösung wüsste.
    Habe versucht dies bei der Seite "http://www.schuelervz.net" an zu wenden. Allerdings bekomme ich immer die Programmmeldung: "Login nicht OK".
    Kann mir einer vieleicht bei der Codeübertragung auf die besagte Seite helfen?


    LG :thumbsup:

    VB.NET-Quellcode

    1. Imports System.IO, System.Net, System.Text
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim User = "MEINE EMAIL", Pwd = "MEIN PW"
    5. Dim Request As HttpWebRequest = CType(WebRequest.Create("https://secure.schuelervz.net/Login"), HttpWebRequest)
    6. Request.Method = "POST"
    7. Request.ContentType = "application/x-www-form-urlencoded"
    8. Dim Post As String = "login_email=" & User & "&login_password=" & Pwd
    9. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    10. Request.ContentLength = byteArray.Length
    11. Dim DataStream As Stream = Request.GetRequestStream()
    12. DataStream.Write(byteArray, 0, byteArray.Length)
    13. DataStream.Close()
    14. Dim Response As HttpWebResponse = Request.GetResponse()
    15. DataStream = Response.GetResponseStream()
    16. Dim reader As New StreamReader(DataStream)
    17. Dim ServerResponse As String = reader.ReadToEnd()
    18. reader.Close()
    19. DataStream.Close()
    20. Response.Close()
    21. If InStr(ServerResponse, "Sie wurden erfolgreich angemeldet.") Then
    22. MessageBox.Show("Login OK")
    23. Else
    24. MessageBox.Show("Login nicht OK")
    25. End If
    26. End Sub
    27. End Class



    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „DrVisualBasic“ ()