Ошибка аутентификации доступа прокси-сервера Java proxy-vole - PullRequest
0 голосов
/ 07 мая 2019

Я использую библиотеку proxy-vole для подключения к URL через pac proxy. Я всегда получаю ошибку аутентификации

java.io.IOException: Невозможно туннелировать через прокси. Прокси-сервер возвращает «HTTP / 1.1 407 прокси-сервер требуется авторизация»

Вот мой код, скажите, пожалуйста, как я могу это исправить

public static void main(String[] args) {
    UrlPacScriptSource source = new UrlPacScriptSource("https://d1tzjzeluf7kb7.cloudfront.net/pacs/us-wa.pac");
    PacProxySelector proxySelector = new PacProxySelector(source);
    ProxySelector.setDefault(proxySelector);

    URI home = URI.create("http://www.google.com");
    System.out.println("ProxySelector: " + proxySelector);
    System.out.println("URI: " + home);
    List<Proxy> proxyList = proxySelector.select(home);
    if (proxyList != null && !proxyList.isEmpty()) {
        for (Proxy proxy : proxyList) {
            System.out.println(proxy);
            SocketAddress address = proxy.address();
            if (address instanceof InetSocketAddress) {
                try {
                    ProxyData proxyData = new ProxyData();
                    proxyData.setHostName(((InetSocketAddress) address).getHostString());
                    proxyData.setPort(((InetSocketAddress) address).getPort());

                    Authenticator.setDefault(new Authenticator() {
                        @Override
                        protected PasswordAuthentication getPasswordAuthentication() {
                            if (getRequestorType() == RequestorType.PROXY) {
                                return new PasswordAuthentication("cucungmatran", "Changeguy1!".toCharArray());
                            } else {
                                return super.getPasswordAuthentication();
                            }
                        }
                    });
                    System.setProperty("http.proxyHost", proxyData.getHostName());
                    System.setProperty("http.proxyPort", proxyData.getPort()+"");
                    System.out.println(Jsoup.connect("https://ipinfo.info/html/ip_checker.php").get().select("#Text14 > p > span > a > b").text());
                } catch (IOException ex) {
                    Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex);
                }

            }
        }
    }
}

1 Ответ

0 голосов
/ 30 мая 2019

Вы должны применить текущий прокси к соединению Jsoup до получения результата:

Jsoup.connect("https://ipinfo.info/html/ip_checker.php")
        .proxy(proxy)
        .get().select("#Text14 > p > span > a > b").text();
...