HTTP Login Internetseite

Status
Nicht offen für weitere Antworten.

Koenig_Klaus

Mitglied
Hi Leute, ich möchte mich gern aus Java auf einer Internetseite (Soziale Netzwerk Xing) einloggen.

Dazu benutze ich den Apache Commons httpclient 3.1, commons logging 1.1.1 und commons codec als lib. (bisher, bin aber auch gern bereit andere zu nehmen, wenn es das Problem löst!)

private void login() throws Exception{
System.out.println("Client wird erstellt...");
HttpClient client = new HttpClient();
System.out.println("Client ist erstellt");
System.out.println("LoginDaten werden gesetzt...");
PostMethod pmethod = new PostMethod(loginSite);
pmethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
pmethod.addParameter("login_user_name", username);
pmethod.addParameter("login_password", passwort);
pmethod.addRequestHeader("login-button","commit");
client.executeMethod(pmethod);
System.out.println(pmethod.getResponseBodyAsString());
pmethod.releaseConnection();
System.out.println("Login beendet");
}

Das ist meine bishere LoginFunktion.
Der Response ist dann:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://www.xing.com/app/startpage">here</a>.</p>
</body></html>

Aber diesen Response erhalten ich sowohl bei richtigem als auch bei falschen PW oder Username.

Für Anregung und Hilfe wäre ich sehr dankbar.

MfG Koenig_Klaus
 
T

tuxedo

Gast
nebenbei: Code-Tags sind was feines. Inspesondere die für Java-Code ...

- Alex
 
T

tuxedo

Gast
Wenn ich die Seite angeben, die mir Xing sagt, dann passiert nix und er gibt mir einfach den html Quelltext der Startseite.
Ich denke hab als Loginseite https://www.xing.com/app/user
Dort leite Xing seine Loginanfragen hin (laut Live HTTP header).


Viele Seiten erwarten dass sich "der Browser" zu erkennen gibt. Tut er das nicht, passiert meist gar nix auf den Request hin. Welche Browser-Kennung schickst du denn mit?

- Alex
 

madboy

Top Contributor
Das zu setzende Feld nennt sich "User-Agent" und kann so gesetzt werden:
Java:
authget.setRequestHeader(new Header(
                        "User-Agent",
                        "Mozilla/5.0 (Windows; U; Windows NT 5.1; en_US;
rv:1.8.1.4)Gecko/20070515 Firefox/2.0.0.4"));
 

Koenig_Klaus

Mitglied
Okay ich habe meinen Quelltest entsprechende ergänzt, aber es hat sich keine Veränderung in Bezug auf den Requeste eingestelllt.
Mein Code sieht nun folgendermaßen aus
Java:
	private void login() throws Exception{
		System.out.println("Client wird erstellt...");
		HttpClient client = new HttpClient();
		System.out.println("Client ist erstellt");
		System.out.println("LoginDaten werden gesetzt...");
		PostMethod pmethod = new PostMethod(loginSite);
		pmethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		pmethod.setRequestHeader(new Header("User-Agent",
                "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
		pmethod.addParameter("login_user_name", username);
		pmethod.addParameter("login_password", passwort);
		pmethod.addRequestHeader("login-button","commit");
		client.executeMethod(pmethod);
		System.out.println(pmethod.getResponseBodyAsString());
		pmethod.releaseConnection();
		System.out.println("Login beendet");
}

MfG Koenig_Klaus
 

Thief

Bekanntes Mitglied
Hi,

ich hab mir mal eben die Xing-Login Seite angeschaut. Wenn ich das richtig sehe übermittelst du
in deinem Quelltext nicht alle Parameter!

Du musst alles was innerhalb des form-Tags, das ein name-Attribut hat, übermitteln!
Also auch z.B. <input type="hidden" name="op" value="login" />
 

Koenig_Klaus

Mitglied
okay ich hab das entsprechend eingefügt.
Java:
private void login() throws Exception{
		System.out.println("Client wird erstellt...");
		HttpClient client = new HttpClient();
		System.out.println("Client ist erstellt");
		System.out.println("LoginDaten werden gesetzt...");
		PostMethod pmethod = new PostMethod(loginSite);
		pmethod.setRequestHeader(new Header("User-Agent",
                "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
		pmethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		pmethod.addParameter("login_user_name", username);
		pmethod.addParameter("login_password", passwort);
		pmethod.addParameter("op", "login");
		pmethod.addParameter("dest", "/app/startpage?op=home;from_login=1");
		pmethod.addRequestHeader("login-button","commit");
		client.executeMethod(pmethod);
		System.out.println(pmethod.getResponseBodyAsString());
		pmethod.releaseConnection();
		System.out.println("Login beendet");
}

Also wenn ich richtigen Benutzername/PW einsetzte dann kommt :

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://www.xing.com/app/startpage?op=home;from_login=1">here</a>.</p>
</body></html>

von Xing zurück. Bei falschen kommt die Startseite zurück, daher nehme ich einfach mal an, das ich eingeloggt bin! Will der mich hier weiterleiten? Wenn ja wie kann ich das automatisch machen (wenn das geht?)!
Andererseits habe ich auch schon versucht im nachhinein die Seite "https://www.xing.com/app/startpage?op=home;from_login=1" über eine GetMethode anzusprechen und es kommt nur die Startseite!

MfG Koenig_Klaus
 

Geeeee

Bekanntes Mitglied
op etc. werden auch als Post-Parameter mitgegeben.
Edit: Sehe gerade, dass nach dem Login das Zeug auch als GET vorhanden ist, wie du es geschrieben hast.
 

Koenig_Klaus

Mitglied
Geben doch "op" als Postparameter mit und auch alle anderen die von der Loginseite gebraucht werden.
Java:
System.out.println(pmethod.getResponseBodyAsString());
gibt mir ja nur den Response (siehe oben)auf meine Postmethode.
Und diesen Response kann ich halt net wirklich deuten?!
Beziehungsweise bekomme ich wenn ich die Startseite (eingeloggt) danach abfrage
Java:
GetMethod getMethod2 = new GetMethod("https://www.xing.com/app/startpage?op=home;from_login=1");
getMethod2.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
client.executeMethod(getMethod2);
, nur die Startseite (nicht eingeloggt).

MfG Koenig_Klaus
 

Koenig_Klaus

Mitglied
Naja dort hab ich gefunden wie man den Link extrahiert, der dort angezeigt wird.
Wenn ich dann jedoch dieses Link öffne, lande ich wieder auf der Startseite (nicht eingeloggt!).
Kann es sein das der mir ne Session ID schickt und ich diese brauche und immer mitschicken müsste?
Wie würde ich an diese Session ID rankommen?

MfG Koenig_Klaus
 

Thief

Bekanntes Mitglied
Okay, habs grad auch probiert und ging nicht. Was aber ging war, wenn ich das
Login als GET versucht habe, sprich:

HttpMethod get = new GetMethod("https://www.xing.com/app/user?op=login&dest=%2Fapp%2Fmessage%3Fbox%3Dinbox&login_user_name=name%40host&login_password=passwort&perm=on");


Danach konnte ich jede beliebige Seite aufrufen die ich wollte.
 

Koenig_Klaus

Mitglied
Ich kann das leider nicht bestätigen, aus irgend einem Grund funktioniert das bei mir nicht

Java:
public void login() throws Exception{
		HttpMethod get = new GetMethod("https://www.xing.com/app/user?op=login&dest=%2Fapp%2Fmessage%3Fbox%3Dinbox&login_user_name="+username+"%40host&login_password="+passwort+"&perm=on");
		get.setRequestHeader(new Header("User-Agent",
              "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
		get.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		client.executeMethod(get);
		HttpMethod get2 = new GetMethod("https://www.xing.com/app/contact");
		client.executeMethod(get2);
		System.out.println(get2.getResponseBodyAsString());
		login = true;	
}

machst du an irgendeiner Stelle etwas anders?

MfG Koenig_Klaus
 

Thief

Bekanntes Mitglied
&login_user_name="+username+"%40host&login_password="+passwort+"

%40 ist encoded für das @-Zeichen (name@host -> name%40host), d.h. du hast deinen username unglücklich da reingepackt.

edit:
Ach, und was ich auch gemacht habe war (wobei ich nicht weiss ob das für den späteren Verlauf einen Unterschied macht oder nicht), dass ich die setCookiePolicy beim HttpClient gesetzt habe und nicht bei der GET-Methode
 
Zuletzt bearbeitet:

Koenig_Klaus

Mitglied
Ahh richtig, verdammtes copy und paste^^
Vielen Dank für die Hilfe, es funzt alles soweit, hier dann nochmal abschließend mein funktionierender Java code

Java:
public void login() throws Exception{
	clientwindow.getMain().setText("LoginDaten werden gesetzt...",Color.BLACK);
	HttpMethod get = new GetMethod("https://www.xing.com/app/user?op=login&dest=%2Fapp%2Fmessage%3Fbox%3Dinbox&login_user_name="+username+"&login_password="+passwort+"&perm=on");
	get.setRequestHeader(new Header("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"));
	client.executeMethod(get);
	clientwindow.getMain().setText(get.getResponseBodyAsString(),Color.BLUE);
	clientwindow.getMain().setText("Login beendet",Color.RED);
	login = true;
}

MfG Koenig_Klaus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
T HTTP JSoup Automatic Website Login Netzwerkprogrammierung 1
Q-bert Link zugang ohne login sperren. Netzwerkprogrammierung 1
S Jsoup Login auf Schulserver Netzwerkprogrammierung 3
T Netzwerk Login Felder ansprechen Netzwerkprogrammierung 1
M HTTPS Login & etwas posten Netzwerkprogrammierung 0
M Sicheres Login-System für App implementieren Netzwerkprogrammierung 6
K Login Shibboleth Netzwerkprogrammierung 0
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
D HTTP Frage zu Login & Session ID Netzwerkprogrammierung 5
J Login Bereich auf jeder Seite Netzwerkprogrammierung 4
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
I HTTP S - Zertifikate+Cockies für Form-basierten Login Netzwerkprogrammierung 2
S Automatischer Login auf einer Webseite Netzwerkprogrammierung 12
E Webseite mit Login laden Netzwerkprogrammierung 5
C Login ohne Erfolg Netzwerkprogrammierung 2
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
T Java => Login mit MySQL Netzwerkprogrammierung 10
M Login mit HtmlUnit Netzwerkprogrammierung 6
K Login via apache httpclient Netzwerkprogrammierung 4
N Login mit Roboter Netzwerkprogrammierung 16
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
M Servlet als Login Netzwerkprogrammierung 20
J Socket Doppel Login geht nicht Netzwerkprogrammierung 11
N Login auf Website Netzwerkprogrammierung 11
H HTTP Login mit POSTMethod und httpClient Netzwerkprogrammierung 5
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
G ftp login Netzwerkprogrammierung 10
L Web Login Netzwerkprogrammierung 3
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
H Login Chatsystem Netzwerkprogrammierung 5
2 Redirect, Login und Download bei Rapidshare.com Netzwerkprogrammierung 4
lebenlechzer Login per Telnet auf Router Netzwerkprogrammierung 2
N icq login Netzwerkprogrammierung 16
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
C Login bei einem php-script Netzwerkprogrammierung 2
E Eingabe (auf Internetseite) durch ein Programm machen lassen Netzwerkprogrammierung 19
V Internetseite abrufen (Caching Problem) Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben