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;
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐