URLConnection - Browseranfrage nachbauen

Status
Nicht offen für weitere Antworten.

hello123

Mitglied
Hallo,
ich versuche mich mittels URLConnection im StudiVZ anzumelden...
Hierfür habe ich die HTTP-Requests per Browser mitgesnifft,
und die RequestPropertys meiner URLConnection in der Anwendung dementsprechend abgeändert,
will ich mich nun einloggen, erhalte ich unterschiedliche HTTP-Status antworten...





Funktionierender Login per Browser:
21432,1T9VV0.jpg




Nicht funktionierender Login per Anwendung:
21433,2OT5Q6.jpg





Meiner Meinung nach sind beide Anfragen absolut identisch,
allerdings erhalte ich eben unterschiedliche Antworten,



Wo liegt mein Fehler?




Hier der Ausschnitt des relevanten Quellcodes:

Java:
try {
	        // Construct data
	        String data = URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8");
	        data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pass, "UTF-8");
	        data += "&" + URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("Einloggen", "UTF-8");
	        data += "&" + URLEncoder.encode("jsEnabled", "UTF-8") + "=" + URLEncoder.encode("true", "UTF-8");
	        data += "&" + URLEncoder.encode("redirect", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");
	        data += "&" + URLEncoder.encode("bookmark", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");
	        data += "&" + URLEncoder.encode("formkey", "UTF-8") + "=" + URLEncoder.encode(formkey(quelltext), "UTF-8");
	        // Send data
	        URL url = new URL("http://secure.studivz.net/Login");
	        URLConnection conn = url.openConnection();
	        
	        conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)");
	        conn.setRequestProperty("Host","secure.studivz.net");
	        conn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
	        conn.setRequestProperty("Accept-Language","de-de");
	        conn.setRequestProperty("Accept-Encoding","gzip,deflate");
	        conn.setRequestProperty("Accept-Charset","ISO-8859-15,utf-8;q=0.7,*;q=0.7");
	        conn.setRequestProperty("Keep-Alive","300");
	        conn.setRequestProperty("Referer","http://www.studivz.net/Login");
	        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
	        
	        conn.setDoOutput(true);
	        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
	        wr.write(data);
	        wr.flush();
	    
	        // Get the response
	        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	        String line;
	        quelltext = "";
	        while ((line = rd.readLine()) != null) {
	        	quelltext += line + "\n";
	        }
	        wr.close();
	        rd.close();
	    } catch (Exception e) {JOptionPane.showMessageDialog(null, e.getMessage());
	    }





MfG
 

sparrow

Top Contributor
Wenn beide Anfrage identisch sind, warum ist dann der Content-Length unterschiedlich?

Ich hab nur schnell drüber geschaut, aber wo sind denn eigentlich die Login-Daten? Das sind quasi die Daten nach dem Header.
 

hello123

Mitglied
Richtig, das mit der Content-Length ist auffällig,
aber ich kann im Header keine Unterschiede mit Wireshark feststellen, abgesehen von der Reihenfolge, in der die Propertys im Header stehen...
Muss ich wohl nochmal genauer drüber schauen...

Die eigentlichen Login-Daten befinden sich anschließend im Abschnitt: Line-based text data in der Form:
email=max%40mustermann.de&password=secret&login=Einloggen&...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben