RaidPower (19.09.2013)
-
19.09.2013, 02:26 #1
- Registriert seit
- 19.09.2013
- Beiträge
- 24
Thanked 14 Times in 6 PostsHTTPWebRequest 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§ion=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.
-
19.09.2013, 03:04 #2
- Registriert seit
- 26.10.2011
- Beiträge
- 1.196
- Blog Entries
- 2
Thanked 1.596 Times in 725 PostsAW: 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.
-
The Following User Says Thank You to patlux For This Useful Post:
-
19.09.2013, 15:55 #3
- Registriert seit
- 15.11.2011
- Beiträge
- 6.209
- Blog Entries
- 5
Thanked 9.130 Times in 3.005 PostsAW: 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).
-
The Following 2 Users Say Thank You to DMW007 For This Useful Post:
RaidPower (19.09.2013), xOneDirectionx (19.09.2013)
-
19.09.2013, 22:19 #4
- Registriert seit
- 19.09.2013
- Beiträge
- 24
Thanked 14 Times in 6 Posts
-
19.09.2013, 22:21 #5
- Registriert seit
- 26.10.2011
- Beiträge
- 1.196
- Blog Entries
- 2
Thanked 1.596 Times in 725 PostsAW: HTTPWebRequest Hilfe! IpBoard Login
Nach dem
Code:StreamWriter strWriter = new StreamWriter(webReq.GetRequestStream(), Encoding.ASCII); strWriter.AutoFlush = true; strWriter.Write(post); strWriter.Close();
Code:webReq.GetResponse();
-
The Following User Says Thank You to patlux For This Useful Post:
RaidPower (20.09.2013)
-
19.09.2013, 23:04 #6
- Registriert seit
- 19.09.2013
- Beiträge
- 24
Thanked 14 Times in 6 PostsAW: 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
-
19.09.2013, 23:05 #7
AW: HTTPWebRequest Hilfe! IpBoard Login
Haste mal ein Testboard wo man den Source ausprobieren kann?
-
The Following User Says Thank You to Ta1lor For This Useful Post:
RaidPower (20.09.2013)
-
19.09.2013, 23:28 #8
- Registriert seit
- 19.09.2013
- Beiträge
- 24
Thanked 14 Times in 6 PostsAW: HTTPWebRequest Hilfe! IpBoard Login
Hast PN mit Link.
-
20.09.2013, 00:06 #9
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§ion=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)
-
The Following User Says Thank You to Ta1lor For This Useful Post:
RaidPower (20.09.2013)
-
20.09.2013, 00:09 #10
- Registriert seit
- 19.09.2013
- Beiträge
- 24
Thanked 14 Times in 6 PostsAW: HTTPWebRequest Hilfe! IpBoard Login
Kannst du mir sagen wo mein Fehler liegt?
Ähnliche Themen
-
VB.Net HTTPwebrequest: Wer Kennt Wen?
Von One Way im Forum .NetAntworten: 5Letzter Beitrag: 10.03.2014, 02:09 -
VB.Net HttpWebRequest - Server gibt immer falsche Meldung
Von !lkay im Forum .NetAntworten: 7Letzter Beitrag: 17.01.2014, 11:23 -
[VB] Hilfe beim Login
Von getsha im Forum Knuddels ProgrammierungAntworten: 0Letzter Beitrag: 19.03.2012, 07:27 -
[Bug] Login
Von MixerY im Forum SupportAntworten: 4Letzter Beitrag: 16.12.2011, 13:10 -
[Hilfe] Brauche hilfe bei Visual Basic
Von Anonymous im Forum SonstigeAntworten: 3Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.