# Login auf Website mit Cookies



## cookiehunter007 (4. Nov 2010)

Hallo Forum,

ich suche jetzt seit langem eine Lösung für folgendes Problem:
Ich versuche mich auf OGame Startseite per Java Code anzumelden, die Cookies zu speichern und das Onlinegame dann zu automatisieren. Kurz ich möchte einen Bot schreiben. Ich komme aus der C# (.Net) Ecke wo ich dies auch schon realisiert habe, jedoch weiß ich in Java nicht weiter.

Mein bisheriger Code in Java:
Eine Helper Klasse:

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class HTTPHelper {

    private String _cookie = "";
    
    public String SendPost(String httpURL, String data) throws IOException   {
        URL url = new URL(httpURL);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");
        // If cookie exists, then send cookie
        if (_cookie != "") {
            connection.setRequestProperty("Cookie", _cookie);
            connection.connect();
        }
        // If Post Data not empty, then send POST Data
        if (data != "") {
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
            out.write(data);
            out.flush();
            out.close();
        }
        
        // Save Cookie
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String headerName = null;
        //_cookies.clear();
        if (_cookie == "") {
            for (int i=1; (headerName = connection.getHeaderFieldKey(i))!=null; i++) {
                if (headerName.equalsIgnoreCase("Set-Cookie")) {    
                    String cookie = connection.getHeaderField(i);
                    _cookie += cookie.substring(0,cookie.indexOf(";")) + "; ";
                }
            }
        }
        // Get HTML from Server
        String getData = "";
        String decodedString;
        while ((decodedString = in.readLine()) != null) {
            getData += decodedString + "\n";
        }
        in.close();
        
        return getData;
    }
}
```
Und dann der Aufruf:

```
HTTPHelper hh = new HTTPHelper();
String res = hh.SendPost("http://" + UniCode + ".ogame.de/game/reg/login2.php","uni_id=&v=2&is_utf8=0&uni_url=" + UniCode + ".ogame.de&login=" + username + "&pass=" + pass);
```
Dabei ist UniCode das Universum also der Server auf  welchem man sich einloggen möchte, in meinem Fall "uni109". username und pass verstehen sich von selbst.

Das Problem ist, dass ich nicht den Quellcode der Seite zurückbekomme, welche kommt, wenn man eingeloggt wurde, sonder nur ein Javascript, welches mich zurück auf die Hauptseite führt: "<script>document.location.href='http://ogame.de'</script>"
Daraus schließe ich, dass OGame mein login nicht angenommen hat.

Ich hoffe mir kann hier jemand helfen, denn soweit ich das sehe mache ich alles genauso wie in meinem C# Programm... Nur Funktioniert es in Java nicht ???:L

Danke und Gruß
cookiehunter

PS. Falls sich jemand mit C# auskennt hänge ich hier noch meinen Funktionierenden C# Code an:


```
var cookies1 = new CookieContainer();
            var request = (HttpWebRequest)WebRequest.Create("http://" + UniCode + ".ogame.de/game/reg/login2.php");
            request.CookieContainer = cookies1;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            //Falls jemand übers UrlEncode stolpert, daran liegts nich...
            string un = HttpUtility.UrlEncode(username);
            string pw = HttpUtility.UrlEncode(pass);
            using (var requestStream = request.GetRequestStream())
            using (var writer = new StreamWriter(requestStream))
            {

                writer.Write("uni_id=&v=2&is_utf8=0&uni_url=" + UniCode + ".ogame.de&login=" + un + "&pass=" + pw);
            }
            string res;
            using (var responseStream = request.GetResponse().GetResponseStream())
            using (var reader = new StreamReader(responseStream))
            {
                var result = reader.ReadToEnd();
                res = result;
            }
```


----------



## cookiehunter007 (5. Nov 2010)

Weiß das wirklich keiner? Es geht auch nicht so wirklich um OGame selbst. Mehr um das Login mit Post im Allgemeinen... Ich habe das nur als Beispiel genommen, im Allgemeinen hat man ein php an welches man Daten übergibt (wie in meinem Beispiel)... In C# gehört das zum Basis-KnowHow, welches ich in Java leider noch nicht habe, aber eigentlich kann ich mir nicht vorstellen, dass es in Java so viel schwieriger ist... Ich hoffe das weiß noch Jemand, trotzdem schonmal Danke an alle die mir weiterhelfen wollen/können.


----------



## Marcinek (5. Nov 2010)

Ich glaube hier Antwortet niemand, weil jeder weiß, dass dies bereits 100000 mal beantwortet worden ist.

Außerdem möchte OGame nicht, dass man es auf diese Art und Weise benutzt. Daher wirst du mit nur cookies setzen nicht weit kommen.... Aber das steht auch alles in den anderen Threads und google results.


----------



## cookiehunter007 (5. Nov 2010)

Marcinek hat gesagt.:


> Außerdem möchte OGame nicht, dass man es auf diese Art und Weise benutzt. Daher wirst du mit nur cookies setzen nicht weit kommen....


Da irrst du dich, ich hatte geschrieben, ich habe einen FUNKTIONIERENDEN Code in c# und da mach ich nichts anderes. Du hast recht, Google, bietet viele Ergebnisse und man sollte meinen diese Frage ist ausreichend beantwortet, jedoch basiert mein Code oben auf Googleergebnissen. Und er funktioniert nicht. Ich bin normalerweise nicht so der Forummensch, aber in dieser Sache komme ich echt nicht weiter, ich habe schon Stunden Google ausgequetscht... Ich hoffe jemand weiß, was ich beim Login falsch mache...


----------

