HTTP Frage zu Login & Session ID

Darkj53

Mitglied
Hallo Jungs, und Mädels,
ich habe mich bereits 3 mal mit meiner Frage hier sichtbar gemacht und jedes mal, hat mir einer von euch wunderbare hilfe geleistet... nun möchte ich euch fragen, kann mir einer hierbei helfen, dem Resultat meiner letzten 2 Posts... ich bin am verzweifeln, der Post login funktioniert nicht, keinen Meter und ich frage mich warum, kann mir pls jemand helfen? :/

Hier mein Code:
Java:
import java.io.*;
import java.net.*;
import java.util.ArrayList.*;
import java.net.URL;
import java.net.CookieHandler.*;
import java.net.HttpURLConnection;
import java.util.List;



public class HttpConnect{
  private String username;
  private String password;
  private String sessionid;
  private String login_url;
  private String sUrl;
  private String url_params;
  private String result;
  private String cookie = "";
  
  
  public void setUrlParams (String sParams){
    this.url_params = sParams;
  }
  public void setURL (String link){
    this.sUrl = link;
  }
  public void setUser (String name) {
    this.username = name;
  }
  public void setPass(String phrase) {
    this.password = phrase;
  }
  public void setUrl(String params) {
    this.url_params = params;
  }
  
  public String getSessionID() {
    return this.sessionid;
  }
  public String getPageResult(){
    return this.result;
  }
  public String getCookies () {
    return this.cookie;
  }
  
  
  public void login () throws Exception {
    /* Link zur LoginSeite */
    URL url = new URL(this.sUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    
    /* Parameter per POST senden */
    con.setRequestMethod("POST"); /* die Zeile brauchst nicht unbedingt */
    con.setDoOutput(true);
    
    /* login/pass ist der name des entsprechenden input fields aus der html seite,
    * username/ passwort sind deine login-date */
    OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
    writer.write("name="+username+"&");
    writer.write("password="+password+"");
    writer.flush();
    writer.close();
    
    /* Asugabe der HTML Antwort Page */
    BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String headerName = null;
    String line = null;
    String s = "";
    
    if (cookie == "") {
      for (int i=1; (headerName = con.getHeaderFieldKey(i))!=null; i++) {
        if (headerName.equalsIgnoreCase("Set-Cookie")) {
          String cookie = con.getHeaderField(i);
          this.cookie += cookie.substring(0,cookie.indexOf(";")) + "; ";
        }
        while((line = reader.readLine()) != null) {
          s = s +"\n"+ line;
        }
        
        
        this.result = s;
      }
    }
    
    
    
    System.out.println(cookie);
    
  }
}

Hier die Source für die Website, für die der Login getätigt werden soll

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Travian de8</title>
		<meta http-equiv="cache-control" content="max-age=0" />
		<meta http-equiv="pragma" content="no-cache" />
		<meta http-equiv="expires" content="0" />
		<meta http-equiv="imagetoolbar" content="no" />
		<meta http-equiv="content-type"	content="text/html; charset=UTF-8" />
		<meta name="content-language" content="de" />
				<link href="gpack/travian_Travian_4.0_Safari/lang/de/compact.css?asd423" rel="stylesheet" type="text/css" /><link href="gpack/travian_Travian_4.0_Safari/lang/de/lang.css?asd423" rel="stylesheet" type="text/css" />				<link href="img/travian_basics.css" rel="stylesheet" type="text/css" />
						<script type="text/javascript" src="crypt.js?1342425972"></script>

<script type="text/javascript">
Travian.Translation.add(
{
	'allgemein.anleitung':	'Anleitung',
	'allgemein.cancel':	'Abbrechen',
	'allgemein.ok':	'OK',
	'cropfinder.keine_ergebnisse': 'Keine Suchergebnisse gefunden'
});
Travian.applicationId = 'T4.0 Game';
Travian.Game.version = '4.0';
Travian.Game.worldId = 'de88';
Travian.Game.speed = 1;
</script>							</head>
	<body class="v35 webkit chrome login">
							<div id="wrapper">
								<img id="staticElements" src="img/x.gif" alt="" />
								<div class="bodyWrapper">
					
										<img style="filter:chroma();" src="img/x.gif" id="msfilter" alt="" />
					<div id="header">
						<div id="mtop">
							<a id="logo" href="http://www.travian.de/" target="_blank" title="Travian"></a>
							<div id="myGameLinkHeaderWrapper">
																	<a id="myGameLinkHeader" class="myGameLink" href="mygame_login.php?page=avatar" title="Zeige mein Spielerprofil auf MYGAME an" target="_blank"></a>
															</div>
																					<div class="clear"></div>
						</div>
											</div>

					<div id="mid">
												<a id="ingameManual" href="support.php" title="Hilfe">
							<img src="img/x.gif" class="question" alt="Hilfe"/>
						</a>

												<div id="side_navi">
	<ul>
		<li>
			<a href="http://www.travian.de/index.php" title="Startseite">STARTSEITE</a>
		</li>

		<li class="active">
			<a href="login.php" title="Login">LOGIN</a>
		</li>

		<li >
			<a href="anmelden.php" title="Registrieren">REGISTRIEREN</a>
		</li>

				<li>
			<a href="http://forum.travian.de" target="_blank" title="Forum">FORUM</a>
		</li>
		
		<li class='support '>
			<a href="support.php" title="Support">SUPPORT</a>
		</li>
	</ul>
</div>												<div class="clear"></div>
						<div id="contentOuterContainer">
							<div class="contentTitle">&nbsp;</div>
							<div class="contentContainer">
								<div id="content" class="login"><h1 class="titleInHeader">
	Login</h1>

<script type="text/javascript">
Element.implement({
	 //imgid: falls zu dem link ein pfeil gehört kann dieser "auf/zugeklappt" werden
	 showOrHide: function(imgid) {
		 //einblenden
		 if (this.getStyle('display') == 'none')
		 {
			 if (imgid != '')
			 {
				 $(imgid).className = 'open';
			 }
		 }
		 //ausblenden
		 else
		 {
			 if (imgid != '')
			 {
				 $(imgid).className = 'close';
			 }
		 }
		 this.toggleClass('hide');
	}
});
</script>

<div class="outerLoginBox">
	<h2>Willkommen auf der Welt Travian de8!</h2>
		<noscript>
		<div class="noJavaScript">
			JavaScript ist deaktiviert. Um Travian spielen zu können, musst du JavaScript in deinen Browsereinstellugen aktivieren.		</div>
	</noscript>
		<div class="innerLoginBox">
		<form name="login" method="POST" action="dorf1.php">
			<table class="transparent loginTable">
				<tr class="account">
					<td class="accountNameOrEmailAddress">
						Accountname oder E-Mail-Adresse					</td>
					<td>
						<input type="text" name="name" value="JnsMy" class="text" /><br />
						<div class="error LTR">
													</div>
					</td>
					<td>
					</td>
				</tr>
				<tr class="pass">
					<td>
						Passwort:					</td>
					<td>
						<input type="password" maxlength="20" name="password" value="" class="text" /><br />
						<div class="error LTR">
													</div>
					</td>
					<td>
					</td>
				</tr>
				<tr class="lowResOption">
					<td>
						Version für Spieler					</td>
					<td colspan="2">
						<input type="checkbox" class="checkbox" id="lowRes" name="lowRes" value="1"	 />
						<label for="lowRes">mit geringer Internetgeschwindigkeit</label>

					</td>
				</tr>
				<tr class="lowResInfo">
					<td colspan="3">
						(Anmerkung: Die Karte dieser Version besitzt nicht alle Optionen)					</td>
				</tr>
				<tr>
					<td>
					</td>
					<td>
						<button type="submit" value="Einloggen" name="s1" id="s1" onclick="document.login.w.value=screen.width+':'+screen.height;"><div class="button-container"><div class="button-position"><div class="btl"><div class="btr"><div class="btc"></div></div></div><div class="bml"><div class="bmr"><div class="bmc"></div></div></div><div class="bbl"><div class="bbr"><div class="bbc"></div></div></div></div><div class="button-contents">Einloggen</div></div></button>						<input type="hidden" name="w" value="" />
						<input type="hidden" name="login" value="1343608928" />
					</td>
					<td>
					</td>
				</tr>
			</table>
		</form>
	</div>
	

			<div class="greenbox passwordForgotten">
				<div class="greenbox-top"></div>
				<div class="greenbox-content">
			 <div class="passwordForgottenLink">
	 	<a onclick="" href="?forgotPassword=true" class="showPWForgottenLink">
	 		<img class="close" id="arrow" src="img/x.gif"/>Passwort vergessen?	 	</a>
	 </div>
	 
				</div>
				<div class="greenbox-bottom"></div>
				<div class="clear"></div>
			</div>
		</div>
								<div class="clear">&nbsp;</div>							</div>							<div class="clear"></div>

						</div> 						<div class="contentFooter">&nbsp;</div>

					</div>					<div id="side_info">
			<div class="news news1">
		<a href="#" class="newsContent newsContentWithLink" onclick="
			$H(
			{
				data:
				{
					cmd:	'news',
					id:		'1'
				}
			}).dialog(); return false;">Am 23.07.12 um 6:00 Uhr ist Welt 7 in eine neue Runde gestartet. Sei dabei und melde Dich noch heute an!</a>
			<a class="newsContentMoreInfoLink" target="_blank" href="ts7.travian.de/anmelden.php">...mehr Informationen</a>	</div>
		<div class="news news2">
		<a href="#" class="newsContent newsContentWithLink" onclick="
			$H(
			{
				data:
				{
					cmd:	'news',
					id:		'2'
				}
			}).dialog(); return false;">Am 09.07.12 um 6:00 Uhr ist die 3 x Speedwelt in eine neue Runde gestartet. Sei dabei und melde Dich noch heute an!</a>
			<a class="newsContentMoreInfoLink" target="_blank" href="http://tx3.travian.de/anmelden.php">...mehr Informationen</a>	</div>
		</div>					<div class="clear"></div>

				</div>

				<div id="footer">

					<div id="mfoot">

						<a href="http://www.travian.de/" target="_blank">Startseite</a>

						<a href="http://forum.travian.de" target="_blank">Forum</a>

						<a href="http://www.travian.de/links.php" target="_blank">Links</a>

						<a href="http://t4.answers.travian.de/" target="_blank">FAQ - Answers</a>

						<a href="http://www.travian.de/agb.php" target="_blank">AGB</a>

						<a href="http://www.travian.de/impressum.php" target="_blank">Impressum</a>

						<div class="clear"></div>

													<a id="myGameLinkFooter" class="myGameLink" href="mygame_login.php?page=travian" target="_blank" title="Besuche die MYGAME Travian Communityseite"></a>

											</div>

                    <p class="copyright">© 2004 - 2012 Travian Games GmbH</p>

				</div>

												<div id="anwersQuestionMark">
	<a href="http://t4.answers.travian.de/index.php?aid=21#go2answer" target="_blank" title="Hilfe">&nbsp;</a>
</div>			</div>



			<div id="ce"></div>

								</div>



		

		<iframe
	src="http://analytics.traviangames.com/piwik_route.php?app=TRAVIAN&amp;ts=1343608928&amp;tld=de"
	style="position: absolute; height: 0px; left: 0px; overflow: hidden; top: 0px; visibility: hidden; width: 0px;"
></iframe>

			</body>

</html>

Und jetzt die Fragen:

1. Kann mir jemand erklären, was ich noch beachten muss, damit der Post Login funktioniert?
2. Was muss ich mit der Session ID machen
und
3. Da dies mein Anfang im bereich der Netzwerk Programmierung ist, kann mir wer dabei helfen, eine Browserengine nachzubauen - die Vorgibt Gecko zu sein, und so modifzizierbar wie möglich ist?
 

tagedieb

Top Contributor
Was für eine Antwort/Fehlermeldung erhälst du den? Welche URL rufst du auf? Hast du den Request der geschickt wird und den Response den du erhälst? Ohne diese Angaben wird dir wohl niemand weiterhelfen können.

Browsergames haben wohl auch einen zusätzlichen Schutz gegen Bots aufgebaut.
Im <form> sehe ich noch 2 andere Parameter (lowres und login) die man für ein erfolgreiches Login wahrscheinlich übergeben muss.

Java ist zwar eine mächtige Sprache, aber für das steuern eines Browsers eignet sie sich nur bedingt. Es gibt zwar Selenium und andere Tools, aber ich frage mich ob sich der Aufwand lohnt es unbedingt in Java umsetzen zu wollen, da es am Schluss darauf hinausläuft, dass man einen eigenen Browser entwickeln muss. Cookies, Javascript....

JavaScript ist dafür viel besser geeignet, denn das ist die Sprache die alle Browser unterstützen und sich recht einfach integrieren lässt. Als Beispiel nenne ich hier mal UserScripts, die via Greasmonkey-Plugin in den Browser integriert werden. Bei Chrome und Opera läufts bereits ohne zusätzliches Plugin.

Hier findest du auch schon zahlreiche Scripts für dein Game Search for travian - Userscripts.org, die du direkt verwenden oder als Vorlage verwenden kannst.
 

jwiesmann

Bekanntes Mitglied
habs nicht ganz durchgelesen, aber vielleicht hilft ja schon
Code:
if (cookie == "") {
in
Code:
if ("".equals(cookie)) {
zu ändern...
Gruß
 

tagedieb

Top Contributor
Wenn du es doch weiter mit Java versuchen möchtest würde ich dir auf alle Fälle die Verwendung eines Http Frameworks wie HttpClient empfehlen. Dies erledigt schon mal das Http-Connection- und Session-Handling. Fehlt dir nur noch den Einbau der Javascript Engine (ab Java 6)
 
J

JBot

Gast
@tagedieb
Antwort dazu habe ich dir mal im anderen Thread gegeben.

@TO
Mir fallen auf anhieb 1 Anfängerfehler und 4 weitere Werte auf :

Fehler : "cookie" ist ein [japi]String[/japi] und muss daher mit Object.equals(Object) verglichen werden. Der Vergleich String == "x" funktioniert so nicht (ja es gibt Ausnahmen).

Werte : sieh dir mal alles was zwischen "<form>" und "</form>" steht ganz genau an (am besten schneide den Rest einfach weg). Dann wirst du hoffentlich sehen welche Felder noch zusätzlich wie zu belegen sind. Das ist eine beliebte Anti-Bot Maßnahme das wirklich ALLE Felder, egal welcher Inhalt, für einen erfolgreichen Login benötigt werden.

Tipp : nutze "WireShark" und sieh dir genau an was dein Browser sendet.
 

tagedieb

Top Contributor
@JBot
Leider kann ich deinen Beitrag nicht finden, hast du den Namen geändert?

Wireshark?
Mit Chrome oder dem Firebug plugin für Firefox kann man den Datenverkehr aufzeichnen und du kannst dir ansehen, was gesendet und empfangen wurde. Und es wird sogar leserlich dargestellt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zum Keystore Netzwerkprogrammierung 21
E Socket Frage Netzwerkprogrammierung 6
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
C Jetty 9 Non Blocking Handler Frage... Netzwerkprogrammierung 1
O log4j Appender Frage Netzwerkprogrammierung 6
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
C Frage zu Threads & Server Netzwerkprogrammierung 4
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
M allgemeine Frage zu einem Web Service Client Netzwerkprogrammierung 2
Q Frage zur Socketprogrammierung Netzwerkprogrammierung 12
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D "Fileserver" Frage + Mit Java zugreifen Netzwerkprogrammierung 9
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
C Webservice Frage Netzwerkprogrammierung 2
M RMI Code Frage: Netzwerkprogrammierung 4
C Frage zur Klasse DatagramPacket Netzwerkprogrammierung 2
S Einfache Server Frage Netzwerkprogrammierung 5
xDarkSunx Kleine Frage authentifizierung Netzwerkprogrammierung 13
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
H Input-/OutputStream Frage Netzwerkprogrammierung 6
N Frage zu JNDI Netzwerkprogrammierung 2
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
X FAQ Frage - Netzwerkgrundlagen - ServerSocket und Socket Netzwerkprogrammierung 4
G Netzwerk IP Frage Netzwerkprogrammierung 4
S NanoHTTPD Server frage Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
E Einfache Frage zu servlets und netbeans 6.5 Netzwerkprogrammierung 41
N Frage/Problem mit RMI Netzwerkprogrammierung 3
Kr0e Frage zu SO_TIMEOUT Netzwerkprogrammierung 3
K SCP und die Frage: Wie geh ich damit um? Netzwerkprogrammierung 7
K Frage zum Verhalten von SocketChannel.write(.) Netzwerkprogrammierung 9
G Frage zu Serversocket-Beispiel aus der FAQ Netzwerkprogrammierung 17
A Frage zur Verschlüsselung mit CipherInputStream Netzwerkprogrammierung 7
H Frage zu RMI Netzwerkprogrammierung 4
5 Grundlegende Design-Frage zu Webservices Netzwerkprogrammierung 16
C Frage zur ipcam WVC54GC von linksys ? Netzwerkprogrammierung 1
ven000m Mittlere Wartezeit Frage Netzwerkprogrammierung 5
T Frage bei Irc Verbindung Netzwerkprogrammierung 10
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
S Serveranfrage - allgemeine Frage Netzwerkprogrammierung 2
ven000m Thread Frage Netzwerkprogrammierung 11
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
H Frage zur Performance Netzwerkprogrammierung 10
flashfactor Frage zu HTML-Response Netzwerkprogrammierung 4
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
K Frage zu Net Send Netzwerkprogrammierung 7
G Frage zu JNDI / RMI Netzwerkprogrammierung 4
A ServerSocket prinzipielle Frage Netzwerkprogrammierung 5
M generelle Frage zum Versenden Netzwerkprogrammierung 4
L Frage nach Socket Netzwerkprogrammierung 4
E frage zu streams Netzwerkprogrammierung 2
Luma Verschiedene Frage zu nem Netzwerkprog Netzwerkprogrammierung 6
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5
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
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
K HTTP Login Internetseite Netzwerkprogrammierung 17
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
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
agent47 Fritz!Box Session ID holen Netzwerkprogrammierung 1
Thallius Browser Session selbst gemacht? Netzwerkprogrammierung 3
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
T Session in RMI Netzwerkprogrammierung 31
A Get a Bean from the session object Netzwerkprogrammierung 2
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben