【发布时间】:2016-02-09 06:23:35
【问题描述】:
我正在尝试使用 Jsoup 从网站获取数据。 该网站的链接是Click here!
这是我获取数据的代码。 `
// WARNING: do it only if security isn't important, otherwise you have
// to follow this advices: http://stackoverflow.com/a/7745706/1363265
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
public X509Certificate[] getAcceptedIssuers(){return null;}
public void checkClientTrusted(X509Certificate[] certs, String authType){}
public void checkServerTrusted(X509Certificate[] certs, String authType){}
}};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
;
}`
String url = "https://www.sos.nh.gov/corporate/soskb/SearchResults.asp?FormName=CorpNameSearch&Words=Starting&SearchStr="+query+"&SearchType=Search";
Connection.Response response = Jsoup.connect(url).timeout(30000)
.method(Connection.Method.GET)
.userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0")
.execute();
Document document = response.parse();
请告诉我我的错误是什么。
【问题讨论】:
-
网站使用哪些密码?您使用哪个 Java 版本?可能是站点需要 sslv3 而您的 Java 已移除支持
-
java版本是7。哪个版本的Java会支持呢?或者任何第三方库都应该这样做?
-
您必须检查该 Web 服务器支持哪个 Ssl / tls 版本。可能是您要求的超出了它的支持范围。谷歌如何使用 OpenSSL 来获取这些信息,我相信你会在 stackoverflow 上找到信息。
-
@Marged + Subhasish:其他方式:该站点仅接受 TLSv1.2,Java7 客户端默认不支持 1.2(或 1.1)。由于Jsoup使用HttpsURLConnection,如果不能升级到Java8,可以设置系统属性
https.protocols=TLSv1,TLSv1.1,TLSv1.2。此外,使用完全信任的 TrustManager 意味着几乎任何有权访问您的网络的人都可以伪造该站点并暴露您发送给它的任何敏感数据。 -
@dave_Thompson_085 我只是在猜测,很好,你检查了细节。想把它变成答案吗?
标签: java ssl web-scraping jsoup