Hi,
ich möchte ein Programm schreiben, wo man eine http/https Adresse eingibt und den html code der Seite bekommt. bei http funktioniert es einwandfrei, aber bei https gibt es bei manchen Seiten Probleme z.B. mit der curseforge.com Seite, hier bekomme ich immer den 403 Response Code zurück. Was muss ich anderst machen?
Code:
PS: bei den letzten drei Zeilen bekomme ich folgenden Text

Ich weiß nicht, wie es euch geht, aber ich verstehe hier nur Bahnhof. Wie kann man den Text leserlich decoden oder ist es gar nicht gewollt, dass man ihn decoden kann(Wenn ja, warum?)?
ich möchte ein Programm schreiben, wo man eine http/https Adresse eingibt und den html code der Seite bekommt. bei http funktioniert es einwandfrei, aber bei https gibt es bei manchen Seiten Probleme z.B. mit der curseforge.com Seite, hier bekomme ich immer den 403 Response Code zurück. Was muss ich anderst machen?
Code:
Java:
public static void main(String[] args) throws IOException {
URL url = new URL("https://" + URLEncoder.encode("curseforge.com"));
System.out.println(url.openConnection().getClass().getName());
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestProperty("Connection", "keep-alives");
con.setRequestProperty("DNT", "1");
con.setRequestProperty("Prefer", "safe");
con.setRequestProperty("Upgrade-Insecure-Requests", "1");
con.addRequestProperty("User-Agent", "Mozilla/4.0");
con.addRequestProperty("sec-ch-ua", "\" Not;A Brand\";v=\"99\", \"Microsoft Edge\";v=\"103\", \"Chromium\";v=\"103\"");
con.addRequestProperty("sec-ch-ua-mobile", "?0");
con.addRequestProperty("sec-ch-ua-platform", "\"Windows\"");
con.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,q=0.8,application/signed-exchange;v=b3;q=0.9");
con.addRequestProperty("Sec-Fetch-Site", "none");
con.addRequestProperty("Sec-Fetch-Mode", "navigate");
con.addRequestProperty("Sec-Fetch-User", "?1");
con.addRequestProperty("Sec-Fetch-Dest", "document");
con.addRequestProperty("Accept-Encoding", "gzip, deflate, br");
con.addRequestProperty("Accept-Language", "de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
con.connect();
System.out.println(con.getResponseCode());
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getErrorStream()));
String msg;
while ((msg =reader.readLine()) != null) {
System.out.println(msg);
}

Ich weiß nicht, wie es euch geht, aber ich verstehe hier nur Bahnhof. Wie kann man den Text leserlich decoden oder ist es gar nicht gewollt, dass man ihn decoden kann(Wenn ja, warum?)?