Seite 1 von 2 12 Letzte
  1. #1

    Registriert seit
    19.09.2013
    Beiträge
    24
    Thanked 14 Times in 6 Posts

    Standard HTTPWebRequest Hilfe! IpBoard Login

    Hallo,

    habe eine IpBoard und möchte für ein Ticket Tool den Login programieren. Mir geht erstmal um den Login, woran ich leider scheitere und am verzweifehln bin. Google seid 5 Stunden und finde nix. Da bin ich auf dieses Board gestosen, hoffe man kann hier mir helfen. Bitte !

    Source:


    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;

    namespace IPBoardLogin
    {
    class Program
    {
    static void Main(string[] args)
    {
    try
    {
    String loginURL = "DOMAIN/index.php?app=core&module=global&section=login";
    String homeURL = "INDEX-DOMAIN";
    String acc = "";
    String pass = "";

    CookieContainer c = new CookieContainer();

    // -------------------------------------------------------------------------------------------------------------------------------
    // AuthKey auslesen!
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(loginURL);
    webReq.CookieContainer = c;
    webReq.Method = "GET";
    webReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
    webReq.ContentType = "application/x-www-form-urlencoded";

    StreamReader strR = new StreamReader(webReq.GetResponse().GetResponseStream());
    String s = strR.ReadToEnd();

    String authKey = Regex.Match(s, "auth_key' value='([^<]+)'").Groups[1].Value;

    Console.WriteLine("AuthKey: {0}", authKey);
    // Authkey auslesen!
    // -------------------------------------------------------------------------------------------------------------------------------
    // Login
    String post = "auth_key=" + authKey + "&ips_username=" + acc + "&ips_password=" +pass + "&rememberMe=1";

    webReq = (HttpWebRequest)WebRequest.Create(loginURL);
    webReq.CookieContainer = c;
    webReq.Method = "POST";
    webReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
    webReq.ContentType = "application/x-www-form-urlencoded";
    webReq.ContentLength = post.Length;

    StreamWriter strWriter = new StreamWriter(webReq.GetRequestStream(), Encoding.ASCII);
    strWriter.AutoFlush = true;
    strWriter.Write(post);
    strWriter.Close();
    // Login
    // -------------------------------------------------------------------------------------------------------------------------------
    // prüfen ob Login erfolgreich
    webReq = (HttpWebRequest)WebRequest.Create(homeURL);
    webReq.CookieContainer = c;
    webReq.Method = "GET";
    webReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
    webReq.ContentType = "application/x-www-form-urlencoded";

    strR = new StreamReader(webReq.GetResponse().GetResponseStream());
    s = strR.ReadToEnd();
    // prüfen ob Login erfolgreich
    // -------------------------------------------------------------------------------------------------------------------------------

    if (s.ToLower().Contains(acc.ToLower()))
    {
    Console.WriteLine("Login erfolgt");
    }
    else
    {
    Console.WriteLine("Login fehlgeschlagen");
    }

    Console.ReadLine();
    }
    catch
    {
    Console.WriteLine("Fehler");
    Console.ReadLine();
    }
    }
    }
    }



    Problem: es wird nix eingeloggt! indexseite bleibt wie es ist also kein account eingeloggt

    habe die Postdaten mit livehttpheader gelgogt, falls das nötig ist als info
    Sry für Rechtschreibung.

  2. #2
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.196
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Beim zweiten Abschnitt, also beim Login mit den Daten, wo rufst du .GetResponse() auf? Du loggst dich sozusagen gar nicht wirklich ein.

  3. The Following User Says Thank You to patlux For This Useful Post:

    RaidPower (19.09.2013)

  4. #3
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.209
    Thanked 9.130 Times in 3.005 Posts
    Blog Entries
    5

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Jo das stimmt, ohne den Aufruf dieser Methode wird der Request nicht gesendet. Du überspringst also quasi die 2. Anfrage wo der eigentliche Login stattfindet.
    Je nachdem was du konkret vor hast wäre es aber wohl sinnvoller, eine API dafür zu entwickeln. So wie du es jetzt machst wird einiges an overhead verursacht. Alleine deine drei HTTP-Anfragen ließen sich je nach Implementierung und Verwendung auf mindestens zwei, wenn nicht direkt eine reduzieren. Ganz zu schweigen von etlichen Datenbankabfragen, die dein Backend bei deinem Code an den DB-Server sendet, obwohl sie gar nicht benötigt werden (zb für Templates).


  5. The Following 2 Users Say Thank You to DMW007 For This Useful Post:

    RaidPower (19.09.2013), xOneDirectionx (19.09.2013)

  6. #4

    Registriert seit
    19.09.2013
    Beiträge
    24
    Thanked 14 Times in 6 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Zitat Zitat von DMW007 Beitrag anzeigen
    Jo das stimmt, ohne den Aufruf dieser Methode wird der Request nicht gesendet. Du überspringst also quasi die 2. Anfrage wo der eigentliche Login stattfindet.
    Je nachdem was du konkret vor hast wäre es aber wohl sinnvoller, eine API dafür zu entwickeln. So wie du es jetzt machst wird einiges an overhead verursacht. Alleine deine drei HTTP-Anfragen ließen sich je nach Implementierung und Verwendung auf mindestens zwei, wenn nicht direkt eine reduzieren. Ganz zu schweigen von etlichen Datenbankabfragen, die dein Backend bei deinem Code an den DB-Server sendet, obwohl sie gar nicht benötigt werden (zb für Templates).
    Ist mein Code echt so schlecht? :S Habe neu angefangen und übe täglich!
    Wo genau müsste ich den Aufruf hinzufügen? Wie wäre der Aufgebaut? Wie bei dem Zweiten Get oder wO?

  7. #5
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.196
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Nach dem

    Code:
    StreamWriter strWriter = new StreamWriter(webReq.GetRequestStream(), Encoding.ASCII);
                    strWriter.AutoFlush = true;
                    strWriter.Write(post);
                    strWriter.Close();
    fehlt lediglich ein

    Code:
    webReq.GetResponse();
    Dann erst wird eine Anfrage an den Server gesendet und du erhälst die Cookies im Cookiecontainer, womit du eingeloggt bist.

  8. The Following User Says Thank You to patlux For This Useful Post:

    RaidPower (20.09.2013)

  9. #6

    Registriert seit
    19.09.2013
    Beiträge
    24
    Thanked 14 Times in 6 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Hey danke dir! Aber klappt auch nicht. Voll nett dass du mir hilfst.

    Habe daten nochmal geloggt und bin auf String.format gestoßen via Google. total hilfreich und übersichtlich sowas!

     String post = String.Format("auth_key={0}&referer={1}&ips_username={2}&ips_password={3}&rememberMe=1", authKey, homeURL, acc, pass);
    


    So ist das aufgebaut wie die daten gesendet werden..
    habe
    webReq.GetResponse();
    


    auch eingefügt, geht leider nicht. muss ich vielleicht die Nickname und Passwort mit HTML Encode kodieren oder brauche ich das nicht? Als ich mit livehttpheader geloggt habe, wurde das nämlich mit HTML Kodierung übertragen z.B. Nickname 1234 wurde zu Nickname+1234

  10. #7
    Avatar von Ta1lor
    Registriert seit
    15.11.2011
    Beiträge
    767
    Thanked 832 Times in 435 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Haste mal ein Testboard wo man den Source ausprobieren kann?

  11. The Following User Says Thank You to Ta1lor For This Useful Post:

    RaidPower (20.09.2013)

  12. #8

    Registriert seit
    19.09.2013
    Beiträge
    24
    Thanked 14 Times in 6 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Hast PN mit Link.

  13. #9
    Avatar von Ta1lor
    Registriert seit
    15.11.2011
    Beiträge
    767
    Thanked 832 Times in 435 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Da du einen 302 Status bekommst hat die Website keinen Source, du musst danach nochmal die Startseite aufrufen, dann sollte das passen.

    //Ach machst du ja schon, mein example geht, ist nur kein .net
    Schieb mal noch den ref mit beim post, hatte da was gesehen

    Perl example:
    Code:
    #!/usr/bin/perl
    use strict;
    use warnings;
    use LWP::UserAgent;
    use HTTP::Cookies;
    my $url = "http://community.ipbsupport.de/";
    my $browser = LWP::UserAgent->new( );
    my $cookie_jar = HTTP::Cookies->new( );
    $browser->cookie_jar( $cookie_jar );
    my $tmp = $browser->get($url);
    my $source = $tmp->content;
    my $auth = "";
    if ($source =~ /name='auth_key' value='(.*)'/) { $auth = $1; }
    $url = "http://community.ipbsupport.de/index.php?app=core&module=global&section=login&do=process";
    my %formfields = (
        "auth_key" => $auth,
        "referer" => "http://community.ipbsupport.de/index.php",
        "ips_username" => "ta1lor",
        "ips_password"=>""
    );
    $tmp = $browser->post( $url, \%formfields);
    $source = $tmp->content();
    $url = "http://community.ipbsupport.de/";
    $tmp = $browser->get($url);
    $source = $tmp->content;
    my $count;
    while ($source =~ /ta1lor/g) { $count++ }
    if ($count > 10) { print "logged in\n"; } else { print "login failed\n"; }
    Geändert von Ta1lor (20.09.2013 um 00:08 Uhr)

  14. The Following User Says Thank You to Ta1lor For This Useful Post:

    RaidPower (20.09.2013)

  15. #10

    Registriert seit
    19.09.2013
    Beiträge
    24
    Thanked 14 Times in 6 Posts

    Standard AW: HTTPWebRequest Hilfe! IpBoard Login

    Kannst du mir sagen wo mein Fehler liegt?

Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. VB.Net HTTPwebrequest: Wer Kennt Wen?
    Von One Way im Forum .Net
    Antworten: 5
    Letzter Beitrag: 10.03.2014, 02:09
  2. Antworten: 7
    Letzter Beitrag: 17.01.2014, 11:23
  3. [VB] Hilfe beim Login
    Von getsha im Forum Knuddels Programmierung
    Antworten: 0
    Letzter Beitrag: 19.03.2012, 07:27
  4. [Bug] Login
    Von MixerY im Forum Support
    Antworten: 4
    Letzter Beitrag: 16.12.2011, 13:10
  5. [Hilfe] Brauche hilfe bei Visual Basic
    Von Anonymous im Forum Sonstige
    Antworten: 3
    Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.