HttpWebrequest Login - Anschließendes Navigieren auf dieser Seite geht nicht

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von BjöNi.

    HttpWebrequest Login - Anschließendes Navigieren auf dieser Seite geht nicht

    Hallo,
    ich möchte auf diese Horde-Seite von unserer Schule mit VB zugreifen. Ich habe sowas schonmal mit dem Webbrowsercontrol gemacht, was aber so unsauber & ineffizient war, dass ich das Projekt lieber gar nicht mehr öffne ;).
    Mit dem Login per HttpWebrequest (mit dem ich es jetzt statt des Webbrowsercontrols machen möchte) klappt eigentlich alles so weit so gut, außer das anschließende Navigieren auf der Seite. Dazu habe ich einen neuen HttpWebRequest erstellt und mit dem gleichen CookieContainer wie beim Login verknüpft.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net, System.IO, System.Text.RegularExpressions, System.Security.Cryptography.X509Certificates
    2. Class frmLogin
    3. Public Class CertificateOverride
    4. Public Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Security.SslPolicyErrors) As Boolean
    5. Return True
    6. End Function
    7. End Class
    8. Private Cookie = New CookieContainer
    9. Private Sub Login()
    10. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Stelle Nutzerdaten zusammen..."))
    11. Dim Login As HttpWebRequest = HttpWebRequest.Create("https://141.62.131.114/horde3/imp/redirect.php")
    12. Dim Post As String = "imapuser=" & txtUser.Text & "&pass=" & txtPw.Text
    13. Dim CertOverride As New CertificateOverride
    14. ServicePointManager.ServerCertificateValidationCallback = AddressOf CertOverride.RemoteCertificateValidationCallback
    15. Login = HttpWebRequest.Create("https://141.62.131.114/horde3/imp/redirect.php")
    16. With Login
    17. .Method = "POST"
    18. .CookieContainer = Cookie
    19. .AllowAutoRedirect = True
    20. .Headers("useragent") = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"
    21. .ContentType = "application/x-www-form-urlencoded"
    22. .ContentLength = Post.Length
    23. End With
    24. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Sende Nutzerdaten an Server..."))
    25. With New StreamWriter(Login.GetRequestStream)
    26. .Write(Post)
    27. .Close()
    28. End With
    29. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Warte auf Server..."))
    30. With New StreamReader(Login.GetResponse.GetResponseStream)
    31. If .ReadToEnd.Contains("<frame name=""horde_menu"" src=""/horde3/services/portal/sidebar.php"" scrolling=""auto"" noresize=""noresize"" />") Then
    32. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Passwort OK!"))
    33. Else
    34. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Passwort FALSCH!"))
    35. Invoke(Sub() Enabled = True)
    36. Exit Sub
    37. End If
    38. .Close()
    39. End With
    40. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Stelle Daten zusammen..."))
    41. Dim DownloadString As HttpWebRequest = HttpWebRequest.Create("https://141.62.131.114/horde3/gollem/manager.php")
    42. With DownloadString
    43. .CookieContainer = Cookie
    44. .ContentType = "application/x-www-form-urlencoded"
    45. .Headers("useragent") = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"
    46. .AllowAutoRedirect = True
    47. End With
    48. Invoke(Sub() status.Items.Add(Now.ToLongTimeString & ": Warte auf Server..."))
    49. With New StreamReader(DownloadString.GetResponse.GetResponseStream)
    50. MsgBox(.ReadToEnd())
    51. End With
    52. Invoke(Sub() Enabled = True)
    53. End Sub
    54. 'WEITERER (UNWICHTIGER) CODE, U.A. WIRD HIER EIN NEUER THREAD(ADRESSOF LOGIN) GESTARTET.
    55. End Class
    Eigentlich sollte in Zeile 50 der Inhalt von der manager.php angezeigt werden, die - wenn man eingeloggt ist - das Ordnersystem auf dem Schulaccount ausgibt und wenn nicht, wird man auf die Startseite geleitet.
    Die MsgBox bleibt aber leer ?( - woran könnte das liegen :?::?::?:
    Gruß, BjöNi
    Hab jetzt noch nen bisschen rumexperimentiert: Wenn ich bei

    VB.NET-Quellcode

    1. DownloadString.Headers("accept-encoding")
    "gzip" oder "deflate" angebe, kommt jeweils eine andere, nicht darstellbare Zeichenfolge in der MsgBox. Ich nehme an, dass das Es ist "" ein bisschen anders kodiert ist (um genauer zu sein: komprimiert).
    Hat sonst noch jemand irgendwelche Ideen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BjöNi“ ()