import java.io.IOException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List;
import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.X509TrustManager;
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements;
/** * @author LuCheng * @date 2018年5月15日 上午10:53:25 */ public class JsoupSSL { public static void main(String[] args) throws IOException { Document document = Jsoup.connect("<url>").validateTLSCertificates(true).get(); System.out.println(document); }
/** * 现在很多站点都是SSL对数据传输进行加密,这也让普通的HttpConnection无法正常的获取该页面的内容, * 而Jsoup起初也对此没有做出相应的处理, * 想了一下是否可以让Jsoup可以识别所有的SSL加密过的页面,查询了一些资料,发现可以为本地HttpsURLConnection配置一个“万能证书”,其原理是就是: * 重置HttpsURLConnection的DefaultHostnameVerifier,使其对任意站点进行验证时都返回true * 重置httpsURLConnection的DefaultSSLSocketFactory, 使其生成随机证书 * 后来Jsoup Connection提供了validateTLSCertificates(boolean validate)//是否进行TLS证书验证,不推荐 */ static { try { // 重置HttpsURLConnection的DefaultHostnameVerifier,使其对任意站点进行验证时都返回true HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }); // 创建随机证书生成工厂 //SSLContext context = SSLContext.getInstance("TLS"); SSLContext context = SSLContext.getInstance("TLSv1.2"); context.init(null, new X509TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } }, new SecureRandom());
// 重置httpsURLConnection的DefaultSSLSocketFactory, 使其生成随机证书 HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } } }
--------------------- 作者:phone13144830339 来源:CSDN 原文:blog.csdn.net/phone131448… 版权声明:本文为博主原创文章,转载请附上博文链接! |
|