Webseiten Login mit HTTPWebRequest

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von bluedra.

    Webseiten Login mit HTTPWebRequest

    Hallo,

    Ich versuche vergeblich, mich bei dem Browsergame "Seafight" mittels HTTPWebRequest einzuloggen.
    Ich bekomme den Fehler 403 (Unzulässig), weiß aber nicht warum.
    Der Fehler muss in der Post-Daten Übergabe liegen, denn wenn ich den ermittelten Link in Firefox öffne, dann erhalte ich zwar nicht das gewünschte Ergebnis, aber immerhin keine 403-Meldung.

    Mein Code bisher:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Imports System.Net
    4. Module Module1
    5. Dim cookies As CookieContainer
    6. Sub Main()
    7. Try
    8. Dim background As ConsoleColor = ConsoleColor.Black
    9. Dim foreground As ConsoleColor = ConsoleColor.Green
    10. Console.BackgroundColor = background
    11. Console.ForegroundColor = foreground
    12. Dim user As String = "xxxx", server As String = "de1", pass As String = "xxxxxxxxx"
    13. Dim loginToken As String = Request("http://" & server & ".seafight.bigpoint.com").ToString.Replace("cation/Bigpoint?authUser=14&token=", "ä").Split("ä")(1).Replace(""">", "ä").Split("ä")(0)
    14. Console.WriteLine("Logintoken received: " & loginToken)
    15. Console.WriteLine("Try now to login...")
    16. Dim logintry As String = Request("https://auth3.bpsecure.com/Sas/Authentication/Bigpoint?authUser=14&token=" & loginToken, "loginname=" & user & "&password=" & pass, "http://" & server & ".seafight.bigpoint.com").ToString
    17. Console.WriteLine("Answer:" & vbNewLine & logintry) 'Hier wird der Fehler ausgegeben
    18. Console.ReadLine()
    19. Catch ex As Exception
    20. Console.WriteLine("Error: " & ErrorToString())
    21. Console.ReadLine()
    22. End Try
    23. End Sub
    24. Public Function Request(ByVal address As String, Optional Post As String = "", Optional ref As String = "")
    25. Try
    26. Dim htRequest As HttpWebRequest = CType(WebRequest.Create(address), HttpWebRequest)
    27. htRequest.CookieContainer = cookies
    28. htRequest.Method = "POST"
    29. htRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1"
    30. htRequest.Accept = "text/htmlapplication/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    31. htRequest.Referer = ref
    32. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    33. htRequest.ContentLength = byteArray.Length
    34. Dim DataStream As Stream = htRequest.GetRequestStream()
    35. DataStream.Write(byteArray, 0, byteArray.Length)
    36. DataStream.Close()
    37. Dim Response As HttpWebResponse = htRequest.GetResponse() 'Hier entsteht er (WebException)
    38. DataStream = Response.GetResponseStream()
    39. Dim reader As New StreamReader(DataStream)
    40. Dim ServerResponse As String = reader.ReadToEnd()
    41. reader.Close()
    42. DataStream.Close()
    43. Response.Close()
    44. Return ServerResponse
    45. Catch ex As Exception
    46. Return ex
    47. End Try
    48. End Function
    49. End Module


    Ich hoffe, dass mir hier jemand helfen kann..
    Danke im vorraus


    bluedra

    P.S: Es soll kein Bot werden. Lediglich ein Tool, dass mir in gewissen Abständen Informationen zum Status meines Accounts liefert, damit ich mich nicht jedesmal dafür einloggen muss. Diese Funktion ist aber noch nicht implementiert, da ich bereits beim Einloggen scheitere
    Funktioniert aber trotzdem nicht.

    Mit cookies.Add() kann ich neue Cookies einfügen, richtig?
    Denn wie's aussieht bin ich nicht weit genug, um das Problem zu beheben.
    Wenn ich den Login-Cookie mit Firefox hole, müsste ich theoretisch direkt auf die Seite navigieren können, die nach dem Login kommt. Richtig?