Ogame Automat mit Java/Apache HTTPClient

11/28/2010 10:13 ISibboI#1
Moin!

Ich hab gestern versucht ne kleine Automatisierung für Ogame zu programmieren, bin aber direkt am Anfang gescheitert. Ich weis nicht wirklich wie ich mich einloggen soll, ich hab zwar per POST alle Felder gesendet, die mir auch FireBug beim Login anzeigt, aber ich bekomme genau nichts zurück.
Hier erstmal mein Code (Java):
Code:
package sibbo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class Connector {
	public static final String USER_AGENT = "Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)";
	public static final String REFERER = "http://ogame.de";

	private static String cookie;

	public static void main(final String[] args) throws IOException {

		final HttpClient http = new DefaultHttpClient();

		final List<NameValuePair> parameters = new LinkedList<NameValuePair>();

		parameters.add(new BasicNameValuePair("uni_id", ""));
		parameters.add(new BasicNameValuePair("v", "2"));
		parameters.add(new BasicNameValuePair("is_utf8", "0"));
		parameters.add(new BasicNameValuePair("uni_url", "uni45.ogame.de"));
		parameters.add(new BasicNameValuePair("login", "Zensiert"));
		parameters.add(new BasicNameValuePair("pass", "Zensiert"));

		final HttpPost post = new HttpPost("http://uni45.ogame.de/game/reg/login2.php");
		post.setEntity(new UrlEncodedFormEntity(parameters));
		post.addHeader("User-Agent", USER_AGENT);
		post.addHeader("Referer", "REFERER");

		// final HttpGet get = new HttpGet("http://ogame.de");

		final HttpResponse response = http.execute(post);
		final HttpEntity entity = response.getEntity();

		final BufferedReader in = new BufferedReader(new InputStreamReader(entity.getContent()));
		String temp;
		final File f = new File("/home/sibbo/Desktop/ogame login.html3");

		if (!f.exists()) {
			f.createNewFile();
		}

		final FileWriter fw = new FileWriter(f);

		while ((temp = in.readLine()) != null) {
			System.out.println(temp);
			fw.write(temp + "\n");
		}

		fw.close();
	}
}
Des weiteren hab ich auch keine Ahnung wie ich an das Cookie rankommen soll :(

Ich hoffe mal ihr habt nen paar Tips für mich :)

Mfg Sibbo
11/28/2010 15:15 SmackJew#2
Den Cookie sendet dir der Server nach erfolgreichem Login in der Antwort. Zum Request kann ich dir nichts sagen, ich weiß ja nicht aus dem Kopf was Ogame für Felder erfordert. Ich habe allerdings vor zwei Jahren mal einen Ogame Bot in C++ geschrieben und der Login war relativ simpel.

Wie wärs wenn du uns mal den Request zeigst, Hellsehen kann hier keiner.
12/02/2010 09:08 ISibboI#3
Quote:
Hellsehen kann hier keiner.
Schade^^

Der Request setzt sich aus den BasicNameValuePairs zusammen, die in der parameters Liste gespeichert werden. Diese werden hier:
post.setEntity(new UrlEncodedFormEntity(parameters));
an den POST request angefügt. Wie gesagt, FireBug gibt nicht mehr her, aber er kommt anscheinend auch nicht an die Rückgabe heran, dafür macht FireFox noch einige GET-requests, unter anderem einen um die overview-Seite anzufordern. Dabei gibt er die SID als parameter mit. Ich denke ich wede mich am WE nochmal mit Cookies beim HttpClient beschäftigen

Mfg Sibbo

Edit:

Ok, ich weiß jetzt, wie ich an die Cookies komme.

Ich habe folgende:
prsess_166614=ddefb21a68d5e38148662fa79aec224f; login_166614=U_de45%3ASibbo%3Aa109c7989f17153afd7e e2bc90d6c552; PHPSESSID=a05df521f0822fe3460079e9360f9c22;

Die dazugehörige session lautet:
c46fdd44ede3

Das sieht nach nem Hashalgorithmus aus, weiß jemand welcher das ist (Edit2: WTF, die steht einfach im Referer... Hab ich ganz vergessen)?

Mfg Sibbo

Edit2 continues:
Na, dann kann ich mich ja endlich daran machen, nen richtigen Spieler daraus zu machen..
12/02/2010 17:18 SmackJew#4
Benutze LiveHTTPHeaders oder irgendeinen Network Sniffer. Das ist vollkommen egal welcher Algorithmus das ist, der Server macht das alles für dich.