Java爬蟲--Https繞過認證

來源:互聯網
上載者:User

標籤:需要   def   server   eve   turn   factory   伺服器   back   自己   

  https網站伺服器都是有認證的。 是由網站自己的伺服器簽發的,並不被瀏覽器或作業系統廣泛接受。

  在使用CloseableHttpClient時經常遇到認證錯誤(知乎的網站就是這樣)

  現在需要SSL繞過認證,下面直接貼出代碼,調用時只需要在發送請求後  new  HttpsBerBer(檔案的位元組碼) ; 

 1 import javax.net.ssl.HostnameVerifier; 2 import javax.net.ssl.HttpsURLConnection; 3 import javax.net.ssl.SSLSession; 4 import java.util.logging.Logger; 5  6 public class HttpsBerBer { 7     public HttpsBerBer(String name) throws Exception { 8         logger = Logger.getLogger(name); 9         trustAllHttpsCertificates();10         HostnameVerifier hv = new HostnameVerifier() {11             public boolean verify(String urlHostName, SSLSession session) {12                 logger.info("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());13                 return true;14             }15         };16         HttpsURLConnection.setDefaultHostnameVerifier(hv);17     }18     private static Logger logger ;19     private static void trustAllHttpsCertificates() throws Exception {20         javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];21         javax.net.ssl.TrustManager tm = new miTM();22         trustAllCerts[0] = tm;23         javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext24                 .getInstance("SSL");25         sc.init(null, trustAllCerts, null);26         javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc27                 .getSocketFactory());28     }29     static class miTM implements javax.net.ssl.TrustManager,30             javax.net.ssl.X509TrustManager {31         public java.security.cert.X509Certificate[] getAcceptedIssuers() {32             return null;33         }34 35         public boolean isServerTrusted(36                 java.security.cert.X509Certificate[] certs) {37             return true;38         }39 40         public boolean isClientTrusted(41                 java.security.cert.X509Certificate[] certs) {42             return true;43         }44 45         public void checkServerTrusted(46                 java.security.cert.X509Certificate[] certs, String authType)47                 throws java.security.cert.CertificateException {48             return;49         }50 51         public void checkClientTrusted(52                 java.security.cert.X509Certificate[] certs, String authType)53                 throws java.security.cert.CertificateException {54             return;55         }56     }57 }

  

     

Java爬蟲--Https繞過認證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.