67,512
社区成员
发帖
与我相关
我的任务
分享
javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at com.hisun.crawler.util.insurance.fujian.XiaMen_IS.getVerficationCode(XiaMen_IS.java:338)
at com.hisun.crawler.util.insurance.fujian.XiaMen_IS.loginCheck(XiaMen_IS.java:291)
at com.hisun.crawler.util.insurance.fujian.XiaMen_IS.crawlerInsuranceBasic(XiaMen_IS.java:83)
at com.hisun.crawler.util.insurance.fujian.XiaMen_IS.main(XiaMen_IS.java:69)
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class XiaMen_IS
{
public static void main(String[] args)
{
crawler();
}
// 信息抓取
public static void crawler()
{
try
{
CloseableHttpClient cbHttpClient = createSSLInsecureClient();
getVerficationCode(cbHttpClient);
} catch (Exception e)
{
System.out.println("---厦门社保抓取失败---");
}
}
// 获取验证码
private static String getVerficationCode(CloseableHttpClient cbHttpClient) throws Exception
{
try
{
String url = "https://app.xmhrss.gov.cn/wcm/servlet/VCodeServlet";// 验证码地址
HttpGet get = new HttpGet(url);
HttpResponse response = cbHttpClient.execute(get);// 报异常
// 获取验证码字节数组
byte data[] = EntityUtils.toByteArray(response.getEntity());
} catch (Exception e)
{
System.out.println("厦门社保下载验证码异常:");
e.printStackTrace();
throw e;
}
return null;
}
// client工具函数,信任对方(https)所有证书
public static CloseableHttpClient createSSLInsecureClient()
{
try
{
// 创建安全套接字对象
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy()
{
// 信任所有
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException
{
return true;
}
}).build();
// 获取分层tls/ssl连接
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e)
{
e.printStackTrace();
} catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
} catch (KeyStoreException e)
{
e.printStackTrace();
}
return HttpClients.createDefault();
}
}