Java爬虫--Https绕过证书

  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.SSLContext
24                 .getInstance("SSL");
25         sc.init(null, trustAllCerts, null);
26         javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
27                 .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 }
时间: 2024-11-09 17:42:26

Java爬虫--Https绕过证书的相关文章

java获取https网站证书

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.security.KeyStore; import java

iOS UIWebView 访问https绕过证书验证的方法

@implementation NSURLRequest (NSURLRequestWithIgnoreSSL) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host{    return YES;} @end

Java 和 HTTP 的那些事(四) HTTPS 和 证书

说起 HTTP 的那些事,则不得不提 HTTPS ,而说起 HTTPS ,则不得不提数字证书.这篇博客将从 Java 的角度,学习 HTTPS 和数字证书技术,并分享爬虫开发的过程中针对爬取 HTTPS 站点时可能遇到的一些问题. 在前面的几篇博客里,其实已经略微提到过 HTTPS 了,譬如使用 HttpsURLConnection 类发送 HTTPS 请求,在使用代理时 HTTP 和 HTTPS 的一些差异等等.关于 HTTPS 的概念就不废话了,下面直接进入正题. 一.访问 HTTPS 站点

Tomcat创建HTTPS访问,java访问https

一 https和ssL HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系.用于安全的HTTP数据传输.https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层

webmagic的设计机制及原理-如何开发一个Java爬虫 转

此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-manual.md 之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方面倒是有一些心得,希望对读者有帮助. webmagic的目标 一般来说,一个爬虫包括

Java爬虫实战(二):抓取一个视频网站上2015年所有电影的下载链接

前言:这是Java爬虫实战的第二篇文章,在第一篇文章仅仅只是抓取目标网站的链接的基础上,进一步提高难度,抓取目标页面上我们所需要的内容并保存在数据库中.这里的测试案例选用了一个我常用的电影下载网站(http://www.80s.la/).本来是想抓取网站上的所有电影的下载链接,后来感觉需要的时间太长,因此改成了抓取2015年电影的下载链接. 注:文末有我抓取到的整个列表的下载链接(包括:电影名称和迅雷下载链接) 一 原理简介 其实原理都跟第一篇文章差不多,不同的是鉴于这个网站的分类列表实在太多,

HTTPS的证书未经权威机构认证的情况下,访问HTTPS站点的两种方法

注意一下文章中提到的jsse在jdk1.4以后已经集成了,不必纠结. 摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点.本文在简要介绍JSSE的基础上提出了两种解决该问题的方法. 引言 过去的十几年,网络上已经积累了大量的Web应用.如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web页面.传统的方法是使

Java 爬虫工具Jsoup解析

Jsoup是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据. jsoup 的主要功能如下: 1. 从一个 URL,文件或字符串中解析 HTML: 2. 使用 DOM 或 CSS 选择器来查找.取出数据: 3. 可操作 HTML 元素.属性.文本: jsoup 是基于 MIT 协议发布的,可放心使用于商业项目. jsoup 可以从包括字符串.URL

java 实现https请求

java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点.本文在简要介绍JSSE的基础上提出了两种解决该问题的方法. 引言 过去的十几年,网络上已经积累了大量的Web应用.如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web 页面.传统的方法是使用Socket接口,但现在很多开发平台或工具如