HttpPostRequest

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    HttpPostRequest

    Hallo @ all

    Ich würde mich gerne per HttpPostRequest auf dieser Seite einloggen. Habe dazu hier diese Lib gefunden nur leider weiß ich jetzt nich wie ich diese benutze.

    Ich weiß das ich 2 Strings an das PHP Script senden muss nämlich den Benutzernamen und das Passwort. Aber woher weiß ich die Adresse von dem PHP Script? Und wie kann ich dann überprüfen ob der Login wirklich geklappt hat? Bin für jede Hilfe Dankbar ;)

    Viele Grüße
    Croasider
    Bin das ganze mal durchgeganegn und mein Code sieht jetzt so aus:

    VB.NET-Quellcode

    1. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://www.zeezee.de/"), HttpWebRequest)
    2. Request.Method = "POST"
    3. Request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
    4. Dim Post As String = "autologin=0&username=" & username & "&password=" & passwort
    5. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    6. Request.ContentLength = byteArray.Length
    7. Dim DataStream As Stream = Request.GetRequestStream()
    8. DataStream.Write(byteArray, 0, byteArray.Length)
    9. DataStream.Close()
    10. Dim Response As HttpWebResponse = Request.GetResponse()
    11. DataStream = Response.GetResponseStream()
    12. Dim reader As New StreamReader(DataStream)
    13. Dim ServerResponse As String = reader.ReadToEnd()
    14. reader.Close()
    15. DataStream.Close()
    16. Response.Close()
    17. If InStr(ServerResponse, "Eingeloggt als:") Then
    18. MessageBox.Show("Login OK")
    19. Else
    20. MessageBox.Show("Login nicht OK")
    21. End If


    Es kommt aber immer "Login nicht OK". Woran kann das liegen?

    Croasider schrieb:

    Es kommt aber immer "Login nicht OK". Woran kann das liegen?

    Mit 99%er Sicherheit erstmal an dem fehlenden CookieContainer. Ausserdem kann der Server natürlich noch andere Properties wie z.B. den Refererer zur Überprüfung verwenden.

    Hast Du wie in dem von JackKimberley geposteten Link vorgeschlagen die wirklich übermittelten Daten mit einem Sniffer oder dem FF Plugin überprüft ?

    Croasider schrieb:

    Habs mit dem FF Plugin überprüft und daraus auch die Infos genommen, die ich jetzt oben im Code stehen habe.

    Aber in den Live-Headers statt unter Garantie auch ein Cookie drin.

    Lege 1x (!) einen CookieContainer an, den Du dann bei allen Requests mitgibts:

    VB.NET-Quellcode

    1. Dim cookies As New CookieContainer
    2. ....
    3. request.cookieContainer=cookies


    Solltest Du Deinemn Quellcode aus dem Tutorial von igoe genommen haben: der hat in seinem Code den CookieContainer auch vergessen/weggelassen.
    Wenn ich

    VB.NET-Quellcode

    1. Dim cookies As New CookieContainer
    2. cookies.GetCookies(Request.RequestUri)


    Kommt immer noch "Login nicht OK". Oder muss ich den Cookie aus der FF Addon Datei dareinschreien? Kapiers gerade iregndwie nich XD Das ist das was ausgelesen wurde:

    HTML-Quellcode

    1. http://www.zeezee.de/login
    2. POST /login HTTP/1.1
    3. Host: www.zeezee.de
    4. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
    5. Accept: application/json, text/javascript, */*
    6. Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    7. Accept-Encoding: gzip,deflate
    8. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    9. Keep-Alive: 115
    10. Connection: keep-alive
    11. Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    12. X-Requested-With: XMLHttpRequest
    13. Referer: http://www.zeezee.de/
    14. Content-Length: 53
    15. Cookie: __utma=255641987.1377547327.1293620591.1294310927.1294313194.6; __utmz=255641987.1294310927.5.4.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=zeezee; _z=jps5iqvh60nqnvj2qn5nqh4jm6; __utmc=255641987; __utmv=; __utmb=255641987.4.10.1294313194
    16. Pragma: no-cache
    17. Cache-Control: no-cache
    18. autologin=0&username=XXXXXXXXXXX&password=XXXXXXXXXXX
    19. HTTP/1.1 200 OK
    20. Date: Thu, 06 Jan 2011 11:53:30 GMT
    21. Server: Apache
    22. Expires: Thu, 19 Nov 1981 08:52:00 GMT
    23. Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    24. Pragma: no-cache
    25. Vary: User-Agent
    26. Content-Length: 36
    27. Keep-Alive: timeout=2, max=100
    28. Connection: Keep-Alive
    29. Content-Type: text/html; charset=UTF-8

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

    Normalerweise ist die Vorgehensweise so:
    - allgemeinen CookieContainer anlegen/instanzieren
    - GET Request auf Start-Seite (mit CookieContainer im Request)
    - POST-Request mit Parametern (mit dem CookieContainer )

    Desweiteren sieht es bei Dir so aus als ob der Request an zeezee.de/login gehen muss.

    Weiterhin kann der Server (muss aber nicht) andere Parameter abfragen um sicher zu sein dass der Request wirklich original ist, üblich ist z.B. die Prüfung des Referers, es geht aber auch Charset/Content-Type/Encoding ....
    Danke habs jetzt hinbekommen :)

    Aber ein kleines Problem habe ich noch. Wenn ich mir hierdrüber den Code lade:

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient()
    2. Dim Quelltext As String = wc.DownloadString("http://www.zeezee.de/mymusic")


    bin ich auf der WebSite trotzdem nicht eingelogt. Ich muss wohl den Cookie mitsenden oder? Wie mache ich das jetzt?

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

    Croasider schrieb:

    Aber ein kleines Problem habe ich noch. Wenn ich mir hierdrüber den Code lade:

    Dann solltest Du vielleicht besser beim httpWebRequest bleiben um den Code runterzuladen, warum jetzt plötzlich auf den WebClient wechseln ?

    Es gibt kein native Handling des CookieContainers durch den Webclient, das geht nur durch Overrides ....