Ich versuche mich auf einer Webseite mit einem Programm einzuloggen. Ich habe viel gegoogelt, aber die Art, wie andere Leute das machen, funktioniert irgendwie nicht für mich.Java: Wie man sich auf einer Webseite anmeldet
Schritte auf der Website einzuloggen sind wie folgt:
ein PHPSESSID erhalten, indem die Auth.php
eine post-Anfrage mit PHPSESSID als Cookie + Inhalt mit Benutzername Passwort &
senden anfordernden
Ich verwendete Burp-Suite, um die Pakete zu sehen, die während dieses Prozesses gesendet und empfangen wurden.
Das Erhalten der PHPSESSID ist ziemlich direkt, das Setzen des Plätzchens und das Senden einer Postanforderung war auch nicht so schwer, aber die Antwort ist nicht die selbe.
String site = "The Site(Https://....)";
URL myUrl = new URL(site);
HttpURLConnection con = (HttpURLConnection) myUrl.openConnection();
con.setRequestMethod("GET");
Map<String, List<String>> headers = con.getHeaderFields();
//Get the PHPSESSID
for(Entry<String, List<String>> e : headers.entrySet()){
System.out.println(e.getKey() + ":" + e.getValue());
}
List<String> ff = headers.get("Set-Cookie");
String asd = ff.get(0);
String[] temp = asd.split(";");
asd = temp[0];
System.out.println(asd);
con.disconnect();
myUrl = new URL(site);
con = null;
con = (HttpURLConnection) myUrl.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Host", "The host");
con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml");
con.setRequestProperty("Accept-Language", "de,en-US;q=0.7,en;q=0.3");
con.setRequestProperty("Referer", "https://ericsson.mareksokol.info/auth.php");
con.setRequestProperty("Connection", "close");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("Cookie", asd);
con.setRequestProperty("Content-Length", "" +login.length());
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream (
con.getOutputStream());
wr.writeBytes(login); //login is just copy&pasted from burp-suite
wr.close();
System.out.println("\n");
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); //
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
System.out.println(response);
Dies ist mein erstes Mal mit einer Website arbeiten und einloggen, ich schätze wirklich jede Hilfe, die Sie mir geben können.
Ich denke, du solltest 'close()' die Verbindungsvariable, bevor du eine andere öffnest, anstatt sie auf null zu setzen. –
@ cricket_007 Ich habe versucht, 'close()' zu verwenden, aber es gibt keine solche Funktion –
'con.close()' sollte existieren –