Java Netzwerkprogrammierung ->Forum einloggen

Schattenfänger

Lt. Junior Grade
Registriert
Nov. 2010
Beiträge
273
Hey, also wie der Titel wohl schon sagt bin ich gerade dabei mich an Netzwerkprogrammierung zu versuchen und habe mir da die Aufgabe gestellt mich in ein Forum einloggen zu können und dann die Threads mal zu listen.

Leider scheitersts schon bei der interpretation des HTML Codes.

Zuerst dachte ich, ich sollte regex verwenden um an die benötigten Zeilen zu kommen, aber dann bin ich zu JSoup abgewandert.
Obwohl das etwas kompliziert ist, ginge wohl mit regex schneller.....

Jedenfalls mal zum Code:

PHP:
Document doc=null;
		try {
			doc = Jsoup.connect("https://www.computerbase.de/forum/").get();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Element content = doc.getElementById("content");
	
		Elements links = doc.select("body"); //nur den body saven
		Elements login=doc.select("#login-form"); //nur mehr login form 
		String in=login.attr("name"); //suchen von value

		
		Elements usr=doc.select("#login-form");
		boolean user=usr.hasAttr("td");


		System.out.println(login);

So, wenn ich das jetzt ausführe bekomme ich zwar das Login Form, jedoch wars das schon.

Ich benötige jedoch die zwei Felder pass sowie name.
Und zum Einloggen benötige ich dann noch den Link des submits, welcher ja in der action steht. Den Link erhalte ich mit login.attr("action").

Danach muss ich wohl mit attr von Element die Daten eintragen.
Hoffe mal das mir jemand von euch sagen will wie ich es zum Einloggen bringe.
Bzw. warum ich keinen Wert für name bekomme.
 
willst du einen BOT schreiben oder wieso versuchst du nicht über den Browser dich einzulogen?
 
bin ich gerade dabei mich an Netzwerkprogrammierung zu versuchen und habe mir da die Aufgabe gestellt mich in ein Forum einloggen zu können und dann die Threads mal zu listen.

So gesehen ja, ich versuche mich am schreiben eines Bots.
 
Also um dich einzuloggen musst du einen POST-Request senden, siehe Wikipedia.
Was für einen genau, erkennst du am Quelltext für CB.
Dort bekommst du einen Cookie zurück. Den musst du dir speichern.
Mit diesem Cookie kannst du dann auf Forumbase alle Aktionen ausführen.
Also irgendwas von
Code:
POST /login.php HTTP/1.0\r\n
Host: computerbase.de\r\n
Encoding: form/......\r\n
\r\n
user=BAR&pass=FOO
Antwort:
Code:
HTTP/1.0 200 OK\r\n
Set-Cookie: Forumcookie=123456\r\n
\r\n
Bei Computerbase ist es (gerade ausprobiert):
Code:
OST /forum/login.php HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: https://www.computerbase.de
Accept-Language: de-DE
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: www.computerbase.de
Content-Length: 133
Connection: Keep-Alive
Cache-Control: no-cache

vb_login_username=Blitzmerker&vb_login_password=xxxxxxxxxx123456&cookieuser=1&do=login&vb_login_md5password=&vb_login_md5password_utf=
Die Antwort ist dann:
Code:
Set-Cookie:	bbuserid=xxxxx; expires=Sun, 25-Mar-2012 21:22:04 GMT; path=/; HttpOnly
Set-Cookie:	bbpassword=xxxxxxxxxxxxxxxxxxxxxxxxxxx; expires=Sun, 25-Mar-2012 21:22:04 GMT; path=/; HttpOnly
Set-Cookie:	bbsessionhash=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy; path=/; HttpOnly
 
Zuletzt bearbeitet:
Zurück
Oben