private static void loadWebView() {
Platform.runLater(() -> {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = null;
try {
sc = SSLContext.getInstance("SSL");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
sc.init(null, trustAllCerts, new java.security.SecureRandom());
} catch (KeyManagementException e) {
e.printStackTrace();
}
ProxyNode proxy = PddApi.getProxy();
if (proxy == null) {
JOptionPane.showMessageDialog(null, "代理IP獲取失敗,請聯繫管理員", "提示", JOptionPane.ERROR_MESSAGE);
return;
}
System.setProperty("http.proxyHost", proxy.getIp());
System.setProperty("http.proxyPort", proxy.getPort() + "");
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HostnameVerifier allHostsValid = (hostname, session) -> true;
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
String sign = "Basic " + proxy.getSign();
HttpsURLConnection.setDefaultRequestProperty("Proxy-Authorization", sign);
webView = new WebView();
webView.getEngine().setJavaScriptEnabled(true);
webView.getEngine().setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36");
webView.setContextMenuEnabled(true);
webView.setCache(true);
webView.getEngine().setOnStatusChanged(event -> {
currentUrl = webView.getEngine().getLocation();
});
webView.getEngine().load(HOME_PAGE);
jFXPanel.setScene(new Scene(webView));
});
}
注意:用:com.sun.webkit.network.CookieManager 不用:java.net.CookieManager
private static String getCookies() {
CookieManager cookieManager = (CookieManager) CookieHandler.getDefault();
try {
Map<String, java.util.List<String>> result = cookieManager.get(new URI(currentUrl), new HashMap<>());
java.util.List<String> cookies = result.get("Cookie");
String cookie = cookies.get(0);
System.out.println(cookie);
return cookie;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}