java 爬取ssl加密页面_解决Java爬取Https网页证书验证问题
package wth.ssl.reptile;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.
package wth.ssl.reptile;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
public class HttpsReptile {
public static void main(String[] args) {
try {
// 重置 HttpsURLConnection 的 DefaultHostnameVerifier, 使其对任意站点进行验证时都通过
HttpsURLConnection.setDefaultHostnameVerifier((String hostname, SSLSession session) -> true);
// 创建随机证书生成工厂
SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); // SSL, TLS, TLSv1.2
sslContext.init(null, new X509TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) { }
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) { }
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
}, new SecureRandom());
// 重置 HttpsURLConnection 的 DefaultSSLSocketFactory, 使其生成随机证书
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
try {
Document document = Jsoup.connect("https://xin.baidu.com/s?q=阿里巴巴&t=0").get();
System.out.println(document);
} catch (IOException e) {
e.printStackTrace();
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)