Commit 0dc26c8c authored by Ckex.zha's avatar Ckex.zha

optimize code.

parent 4f76d62d
...@@ -4,6 +4,7 @@ import java.io.IOException; ...@@ -4,6 +4,7 @@ import java.io.IOException;
import java.security.KeyManagementException; import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map; import java.util.Map;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
...@@ -11,6 +12,7 @@ import javax.net.ssl.TrustManager; ...@@ -11,6 +12,7 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.HttpException; import org.apache.http.HttpException;
import org.apache.http.HttpRequest; import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor; import org.apache.http.HttpRequestInterceptor;
...@@ -33,6 +35,8 @@ import org.apache.http.impl.client.HttpClients; ...@@ -33,6 +35,8 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.proxy.Proxy; import us.codecraft.webmagic.proxy.Proxy;
...@@ -42,46 +46,51 @@ import us.codecraft.webmagic.proxy.Proxy; ...@@ -42,46 +46,51 @@ import us.codecraft.webmagic.proxy.Proxy;
* @since 0.4.0 * @since 0.4.0
*/ */
public class HttpClientGenerator { public class HttpClientGenerator {
private transient Logger logger = LoggerFactory.getLogger(getClass());
private PoolingHttpClientConnectionManager connectionManager; private PoolingHttpClientConnectionManager connectionManager;
public HttpClientGenerator() { public HttpClientGenerator() {
SSLConnectionSocketFactory sslConnectionSocketFactory = null;
try {
sslConnectionSocketFactory = new SSLConnectionSocketFactory(createIgnoreVerifySSL());
} catch (Exception e) {
e.printStackTrace();
}
Registry<ConnectionSocketFactory> reg = RegistryBuilder.<ConnectionSocketFactory>create() Registry<ConnectionSocketFactory> reg = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE) .register("http", PlainConnectionSocketFactory.INSTANCE)
// .register("https", SSLConnectionSocketFactory.getSocketFactory()) .register("https", buildSSLConnectionSocketFactory())
.register("https", sslConnectionSocketFactory)
.build(); .build();
connectionManager = new PoolingHttpClientConnectionManager(reg); connectionManager = new PoolingHttpClientConnectionManager(reg);
connectionManager.setDefaultMaxPerRoute(100); connectionManager.setDefaultMaxPerRoute(100);
} }
private SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException { private SSLConnectionSocketFactory buildSSLConnectionSocketFactory() {
SSLContext sc = SSLContext.getInstance("SSLv3"); try {
return new SSLConnectionSocketFactory(createIgnoreVerifySSL()); // 优先绕过安全证书
} catch (KeyManagementException e) {
logger.error(ExceptionUtils.getStackTrace(e));
} catch (NoSuchAlgorithmException e) {
logger.error(ExceptionUtils.getStackTrace(e));
}
return SSLConnectionSocketFactory.getSocketFactory();
}
private SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法 // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() { X509TrustManager trustManager = new X509TrustManager() {
@Override @Override
public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate, public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
String paramString) throws CertificateException {
} }
@Override @Override
public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate, public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
String paramString) throws CertificateException {
} }
@Override @Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() { public X509Certificate[] getAcceptedIssuers() {
return null; return null;
} }
}; };
SSLContext sc = SSLContext.getInstance("SSLv3");
sc.init(null, new TrustManager[] { trustManager }, null); sc.init(null, new TrustManager[] { trustManager }, null);
return sc; return sc;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment