- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取网站的 HTML 源代码。
我的代码:
public static void main(String[] args) {
URL url;
InputStream is;
try {
url = new URL("https://www.trackobot.com/");
is = url.openStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
但是,当运行此代码时,我得到一个异常:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1546)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1045)
at JsoupTutorial.ConnectToUrl.main(ConnectToUrl.java:24)
如果我更改网站,即使使用像 PayPal 这样的 https 网站,它也能正常工作。但是,我仍然有一些网站无法正常工作并抛出该异常。示例中的该网站是无法运行的网站之一。
我搜索了一下,了解到我需要将该站点的证书导入到Java keystore 中。 我说得对吗?
我的问题是 Chrome 如何设法进入那些“安全”网站并获取 HTML 代码?必须有人将证书更新(导入)到 Chrome Cer 数据库。谁执行此操作以及何时执行? (以防万一我上面的说法是正确的)。
无论如何,我想设法完美地加载这些网站并接收我想要的数据。哪里可以从基础开始学习?
谢谢。
最佳答案
这里的问题几乎可以肯定是您正在尝试访问使用 SSL/HTTPS 的网站,但您没有使用支持该功能的 API。您可以尝试将 HttpsURLConnection 与接受所有内容的(不良)信任存储一起使用。 永远不要在生产中这样做。
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
SSLContext.setDefault(ctx);
URL url = new URL("https://www.trackobot.com/");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
con.setRequestMethod("GET");
System.out.println("Response Code : " + con.getResponseCode());
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
StringBuffer response = new StringBuffer();
while ((line = in.readLine()) != null) {
response.append(line);
}
in.close();
System.out.println(response.toString());
private static class DefaultTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
理想情况下,假设域提供来自相对标准提供商的证书,开箱即用的 HttpsURLConnection 应该可以正常工作。由于它不适用于您的域,因此我们可以将其配置为信任所有内容。生产情况不佳,但也许可以让您暂时继续。
关于Java - 收到致命警报 : handshake_failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521154/
我正在尝试获取网站的 HTML 源代码。 我的代码: public static void main(String[] args) { URL url; InputStream is;
我在 https://www.ssllabs.com/ssltest/ 上运行了 ssl 证书测试我得到了很好的评价,但我看到一些设备旁边有错误,例如,在握手模拟下,Android 5.0 和 6.0
我的代码试图访问与应用程序位于同一服务器上的模板文件。在我们打开 SSL 之前一切正常。 现在,当连接到文件时,我得到一个 SSLHandshakeException: handshake_failu
我有一个在 docker 容器上的 tomcat (v8.0.44) 上运行的 Java 8 应用程序。此应用程序调用外部 https url(我无法提供 url),但出现以下错误: Exceptio
这个问题在这里已经有了答案: Warning: no suitable certificate found - continuing without client authentication (
我正在尝试使用 liferay 中的 javapns 库向我的设备发送推送通知。这是代码: private void pushNotification(ActionRequest actionRequ
我正在编写一个 Java 客户端(在 weblogic 10.3 上)来调用一个安全的网络服务。我已获得安装在 cacerts、DemoIdentity.jks 和 DemoTrust,jks 中的客
我雇用了一项网络服务,可以向手机发送短信。我尝试发出发布请求,但收到错误: Exception in thread "main" javax.net.ssl.SSLHandshakeException
我在 Tomcat 中授权 ssl 连接时遇到问题。我开发了使用证书连接到外部服务器的类。当我在命令行中运行它时它工作正常。但是当我从 Tomcat 中托管的 JSP 页面调用它时,会抛出如下异常:
我正在尝试使用 Java HTTP 客户端从 HTTPS 服务器下载图像... System.setProperty("javax.net.debug", "all"); System.setProp
我正在使用 quickfix 来验证服务器的证书并获得致命的 handshake_failure。 在我看来是这样的: 初始握手开始 客户端连接。 服务器接受。 在此期间发生 TLS 握手: o 密码
我正在尝试向我们的其中一个服务器 url 发送请求,但每当我尝试连接时,我都会收到这种期望 java.net.ConnectException: Received fatal alert: hands
可以看成是重复的问题。我已经遍历了与此问题相关的所有可能的 stackoverflow 线程,并且尝试了所有解决方案但没有运气。实际上,应用程序正在使用 httpclient-4.3.4.jar 并在
我正在尝试在我们的服务器(Ubuntu、SSL 证书)和我们的合作伙伴(通过 AS2 通信)之间建立连接。当合作伙伴尝试连接到我们的服务器时,他收到错误消息 HANDSHAKE_FAILURE。 由于
我正在尝试连接到启用了 SSL 的 LDAP 服务器。我不想使用身份验证,因此我覆盖了 SSLSocketFactory 以允许每个站点。我收到以下错误: main, handling excepti
我正在尝试使用带有 WolfSSL 的 tls1.2 将嵌入式设备连接到 smtp.gmail.com:465。该库创建并发送以下 clientHello 消息并收到握手失败消息。 16 03 03
iOS 推送通知 由于 handshake_failure 而失败,但它在我的本地机器上运行良好,但在部署到服务器时出现错误。 我正在使用 apns-0.1.5.jar 代码: static
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 我在 soapui 中使用休息服务。我必须在命
当我使用 curl 查询时,logz.io 就像魅力一样: curl -XPOST 'https://api.logz.io/v1/query' --header "X-USER-TOKEN : VA
直到昨天(9 月 22 日),我的微服务在生产中运行良好,今天它在与 AWS Athena 通信时开始发出握手失败。 我已经检查了 SSL 证书,它似乎很好并且有效。 环境: Java 7, Tomc
我是一名优秀的程序员,十分优秀!