Ich bin auf der Suche nach einer VirusTotal URL, deshalb versuche ich, eine Verbindung zu dem bestimmten Link zu öffnen und die Webseiten-Quelle zu lesen.VirusTotal HTTPS Verbindung Java
ich diesen Code bin mit
package boot;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;
import java.io.*;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
public class Run {
public static void main(String[] args) {
new Run().testIt();
}
private void testIt() {
String https_url = "https://www.virustotal.com/en/file/7b6b268cbca9d421aabba5f08533d3dcaba50e0f7887b07ef2bd66bf218b35ff/analysis/";
URL url;
try{
url = new URL(https_url);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
// dumpl all cert info
print_https_cert(con);
System.out.println(con);
// dump all the content
print_content(con);
} catch(MalformedURLException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
private void print_https_cert(HttpsURLConnection con) {
if(con != null){
try{
System.out.println(con);
System.out.println("Response Code : " + con.getResponseCode());
System.out.println("Cipher Suite : " + con.getCipherSuite());
System.out.println("\n");
Certificate[] certs = con.getServerCertificates();
for(Certificate cert : certs){
System.out.println("Cert Type : " + cert.getType());
System.out.println("Cert Hash Code : " + cert.hashCode());
System.out.println("Cert Public Key Algorithm : " + cert.getPublicKey().getAlgorithm());
System.out.println("Cert Public Key Format : " + cert.getPublicKey().getFormat());
System.out.println("\n");
}
} catch(SSLPeerUnverifiedException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
}
private void print_content(HttpsURLConnection con) {
if(con != null){
try{
System.out.println("****** Content of the URL ********");
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String input;
while((input = br.readLine()) != null){
System.out.println(input);
}
br.close();
} catch(IOException e){
e.printStackTrace();
}
}
}
}
aber ich bekomme diese Fehlermeldung
Response Code : 200
Exception in thread "main" java.lang.IllegalStateException: connection not yet open
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getCipherSuite(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getCipherSuite(Unknown Source)
at boot.Run.print_https_cert(Run.java:38)
at boot.Run.testIt(Run.java:23)
at boot.Run.main(Run.java:13)
ich einige Tests und Anpassungen versucht haben zu tun, aber ich schaffe es nicht funktioniert.
Ich habe auch ein paar andere Websites getestet und es hat gut funktioniert.
Vielen Dank.
Ich habe versucht, Ihren Code und ich habe die gleichen Ergebnisse. Meine Vermutung ist, dass Virustotal eine Anti-Roboter-Logik hat, die verhindert, dass der Server die Daten zurückgibt. Ich habe versucht, der Anfrage einen User-Agent hinzuzufügen, aber das hat auch nicht geholfen. Ich bin mir nicht sicher, was ich zu diesem Zeitpunkt noch versuchen sollte, und es ist spät für mich, also werde ich noch etwas darüber nachdenken und zu dir zurückkommen, wenn mir etwas in den Sinn kommt. –