Weblogin mit Cookie

nabo_c

Grünschnabel
Hi,

um mir etwas Arbeit abzunehmen, hab ich ein Programm geschrieben, das Webseiten herunterläd und bearbeitet. Das Problem ist, das ich mich erst anmelden muss, um an die Seiten zu gelangen und damit hab ich so meine Schwierigkeiten. Ich hab schon viele Beiträge zu diesem Problem gelesen und weiß nun so ungefähr, was ich machen muss, aber ich tab dabei voll im Dunkeln.

Das Formular zum einloggen:
Code:
FORM action="...login.php4?id=467363651e1f0b85c629b1ba6d678a79" method="post"> 
<br> 
<input type="hidden" name="sesid" value=""> 
... 
<INPUT class=feld name=uname><br> 
... 
<INPUT class=feld type=password name=upasswort><br><br> 
... 
<input name="key" class=feld size=6 maxlength=6><br><br> 
<INPUT class=button type="submit" value="Login" name="login"><br> 
... 
<INPUT class=feld type=checkbox CHECKED value=ja name=jaathome><br> 
</FORM>
Wie bekommt die Variable sesid ihren Wert? Und wieso steht die ohne Wert im Formular?

Meine wichtige Teilfunktion:
Code:
	static void save (String _url, String datei) throws Exception {
		String thisLine;
		System.out.println (_url);
		
		URL url = new URL(_url);

		try {
			HttpURLConnection huc = (HttpURLConnection) url.openConnection();

			try {
				BufferedReader in = new BufferedReader( new InputStreamReader(url.openStream()) );
				PrintWriter out = new PrintWriter ( new FileWriter (datei) );

				try {
					while( (thisLine = in.readLine()) != null ) {
						out.println(thisLine);
					}
					in.close();
					out.close();
				} catch (IOException e) {
					System.out.println("Read error " + e);
				}
			}
			catch (IOException e) {
				System.out.println("Open error " + e);
			}
		} catch (MalformedURLException e) {     
			System.out.println("Connect error " + e);
		} 
		System.out.println ("");
	}

Zu meinem bisherigen Vorgehen:

Ich less aus der Portalseite die IP des aktuellen Servers, die Login-id aus dem Formular und den Key den ich auch brauch.

Code:
		String login = ip+"php/login.php4?id="+id+"&sesid=&uname=***&upasswort=***&key="+key+"&login=Login";

Das übergeb ich dann an die save().
In der save() wird die Verbindung aufgebaut und die generrierte *.html gespeichert.
Ich hab mir die *.html angeschaut und die leitet mich zu einer weiteren Seite, so wie es sein soll.
Diese Seite, hat aber in einem Frame eine rechts_login.php4 und die bestimmt mein entgültigen login, aber da flieg ich immer raus. Soll heißen, die Antwort der rechts_login.php4 verweist mich nicht zum Internen bereich.

Wenn ich im Opera einstell, es soll mir sagen, wenn ich ein Cookie bekomm, dann seh ich, dass die erste login.php4 mir ein Cookie schickt. Da steht dann "PHPSESSID: Zahlencode" drin.

Ich weiß zwar, wie ich ein Cookie annehmen kann, aber nicht wann? und an welcher Stelle im Code?
Code:
      /* To get cookie. */
      ...
      HttpURLConnection huc= (HttpURLConnection) url.openConnection();
      ...

      InputStream is = huc.getInputStream();

      // Retrieve session ID from response.
      String cookieVal = hc.getHeaderField("Set-Cookie");
      String sessionId;
      if(cookieVal != null)
      {
            sessionId = cookieVal.substring(0, cookieVal.indexOf(";"));
      }

      ...

Ich hab auch gefunden, wie ich ein Cookie sende, aber da hab ich die selben fragen.

Code:
      /* To send cookie. */
      HttpURLConnection huc= (HttpURLConnection) url.openConnection();
      if(sessionId != null)
      {
            huc.setRequestProperty("Cookie", sessionId);
      }
      
      InputStream is = huc.getInputStream();
      ...

Außerdem bin ich mir nicht sicher, ob mir die beiden Code-fragmente helfen.

Ich wär euch dankbar, wenn ihr mir weiter helfen könntet. Wie sag ich der rechts_login.php4, dass ich eingeloggt bin und wie sag ich es den weiteren *.php .. ich hoffe, immer auf die selbe weise :)

danke,
nabo_c
 
Zuletzt bearbeitet:
ich hab meine Teilfunktion jetzt etwas ergänzt, aber ich bekomm immernoch keinen zugriff auf die geschützten Dateien.

Code:
	static String sessionId=null;
	
	static void save (String _url, String datei) throws Exception {
		String thisLine;
		System.out.println (_url);
		
		URL url = new URL(_url);

		try {
			HttpURLConnection.setFollowRedirects(false);
			HttpURLConnection huc = (HttpURLConnection) url.openConnection();

			huc.setDoOutput(true);
			huc.setDoInput(true);
			huc.setUseCaches(false);
			huc.setAllowUserInteraction(true);

			try {
				BufferedReader in = new BufferedReader( new InputStreamReader(url.openStream()) );
				PrintWriter out = new PrintWriter ( new FileWriter (datei) );

				// Send session ID
				if(sessionId != null)
				{
					huc.setRequestProperty("Cookie", sessionId);
					System.out.println("SessionId gesendet: "+sessionId);
				}
				
				
				// Retrieve session ID from response.
				String cookieVal = huc.getHeaderField("Set-Cookie");
				if(cookieVal != null) {
					sessionId = cookieVal.substring(0, cookieVal.indexOf(";"));
					System.out.println("SessionId bekommen: "+sessionId);
				}
				
				try {
					while( (thisLine = in.readLine()) != null ) {
						out.println(thisLine);
					}
					in.close();
					out.close();
				} catch (IOException e) {
					System.out.println("Read error " + e);
				}
			}
			catch (IOException e) {
				System.out.println("Open error " + e);
			}
		} catch (MalformedURLException e) {     
			System.out.println("Connect error " + e);
		} 
		System.out.println ("");
	}
 
Zurück