Java in Websites einloggen

Kuma

Cadet 4th Year
Registriert
Okt. 2012
Beiträge
109
Hey, ich habe versucht mich per HTTPConnection in Websites einzuloggen, was leider aus irgendeinem Grund immer wieder scheitert.

Ich habe es einfach mal am Beispiel von ComputerBase gemacht...

Code:
	public static String excuteQuery(String targetURL, String postUrl,
			String contentParameters, boolean post, String cookie,
			String referer, String userAgent, String accept) {
		URL url;
		HttpURLConnection connection = null;
		try {
			// Create connection
			url = new URL(targetURL);
			connection = (HttpURLConnection) url.openConnection();
			if (post) {
				connection.setRequestMethod("POST");
				connection.setDoOutput(true); // POST wird erzwungen
			} else {
				connection.setRequestMethod("GET");
			}

			if (post) {
			connection.setRequestProperty("POST", postUrl + " HTTP/1.1");
			}

			connection.setRequestProperty("Host", targetURL);

			if (userAgent == null || userAgent == "" || userAgent.equals("")) {
				connection
						.setRequestProperty("User-Agent",
								"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401");
			}
			connection
					.setRequestProperty("Accept",
							"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");

			connection.setRequestProperty("Accept-Language",
					"de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");

			connection.setRequestProperty("Accept-Charset",
					"ISO-8859-1,utf-8;q=0.7,*;q=0.7");

			connection.setRequestProperty("Keep-Alive", "300");
			connection.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			connection.setRequestProperty("Connection", "keep-alive");

			if (referer == null || referer == "" || referer.equals("")) {
				connection.setRequestProperty("Referer", referer);
			}
			if (post) {
				connection.setRequestProperty("Cookie", cookie);
			}
			if (post) {
				connection
						.setRequestProperty(
								"Content-Length",
								""
										+ Integer.toString(contentParameters
												.getBytes().length));
				contentParameters = URLEncoder.encode(contentParameters, "UTF-8");
			}
			connection.setUseCaches(false);

			// Send request
			if (post) {
				DataOutputStream wr = new DataOutputStream(
						connection.getOutputStream());

				wr.writeBytes(contentParameters);
				wr.flush();
				wr.close();
			}

			// System.out.println(connection.getHeaderField("Set-Cookie"));
			if (globalCookie == null) {
				globalCookie = connection.getHeaderField("Set-Cookie");
			}
			// Get Response
			InputStream is = connection.getInputStream();

			
			
			
			
			StringBuffer responseHeader = new StringBuffer();
			Map<String, List<String>> hdrs = connection.getHeaderFields();
			Set<String> hdrKeys = hdrs.keySet();
			for (String k : hdrKeys) {
				System.out.println("Key: " + k + "  Value: " + hdrs.get(k));
				responseHeader.append("Key: " + k + "  Value:  "
						+ hdrs.get(k));
				responseHeader.append("\r\r");
			}

			
			BufferedReader rd = new BufferedReader(new InputStreamReader(is));
			String line;
			StringBuffer response = new StringBuffer();
			while ((line = rd.readLine()) != null) {
				response.append(line);
				response.append("\\n\\r");
				
			}
			if (post) {
				globalResponse =responseHeader.toString();
				 globalResponseString = responseHeader.toString();
			}
			

			rd.close();
			return response.toString();

		} catch (Exception e) {

			e.printStackTrace();
			return null;

		} finally {

			if (connection != null) {
				connection.disconnect();
			}
		}

	}

Ich hoffe mal, dass das wenigstens ansatzweise korrekt ist.
Auf Computerbase connecten geht ohne Probleme.

Wenn ich jetzt jedoch mich irgendwo einloggen möchte per post passiert einfach gar nix.


Code:
	googleTest.excuteQuery("https://www.computerbase.de/", null, null, false,
			null, "http://google.com/", null, null);
		
		
		String postParas = "vb_login_username=Kuma&vb_login_password=&do=login&vb_login_md5password=&vb_login_md5password_utf=";

		googleTest.excuteQuery("https://www.computerbase.de/",
				"https://www.computerbase.de/forum/login.php", postParas,
				true, globalCookie, "https://www.computerbase.de/", null, null);

Ich glaube ich habe da irgendetwas falsch verstanden.
Ich habe bereits probiert, dass ich als host (login.php nehme aber das bringt leider auch nix.
Ich verstehe den Unterschied zwischen host und postUrl wohl nicht richtig.
Kann es sein, dass ich gar keine postUrl benötige und einfach unter Host den Pfad angeben soll?

Nur, wenn ich jetzt die Daten beim Einloggen mitlogge, dann wird auch per computerbas/login.php
und als host : forum/login.php der Request geschickt.
Wenn ich dass, genauso eingebe, dann erhalte auch auch nix.
Dabei müsste ich doch zumindest eine Fehlermeldung erhalten, dass das Passwort nicht korrekt ist oder sowas.
 

Ähnliche Themen

Zurück
Oben