【问题标题】:Java - Status 401 - PAC Proxy authentication for JSoupJava - 状态 401 - JSoup 的 PAC 代理身份验证
【发布时间】:2019-05-28 17:04:41
【问题描述】:

我正在尝试使用 Jsoup 从网页中收集元素,但我使用的是 PAC 代理。当我尝试使用 Jsoup 访问网站时,出现代码状态 401 身份验证错误。似乎问题出在代理上。我已经安装了一个名为 Proxy-Vole 的库,它应该对我进行身份验证,但我相信我没有正确使用它。我希望最终通过代理进行身份验证,并尽可能继续。

ProxySearch proxySearch = new ProxySearch();
if (PlatformUtil.getCurrentPlattform() == Platform.WIN) {
    proxySearch.addStrategy(Strategy.IE);
    proxySearch.addStrategy(Strategy.FIREFOX);
    proxySearch.addStrategy(Strategy.JAVA);
} else if (PlatformUtil.getCurrentPlattform() == Platform.LINUX) {
    proxySearch.addStrategy(Strategy.GNOME);
    proxySearch.addStrategy(Strategy.KDE);
    proxySearch.addStrategy(Strategy.FIREFOX);
} else {
    proxySearch.addStrategy(Strategy.OS_DEFAULT);
}

ProxySelector proxySelector = proxySearch.getProxySelector();
ProxySelector.setDefault(proxySelector);

Document doc = Jsoup.connect("https://www.whatever.com").get();

【问题讨论】:

    标签: java proxy jsoup pac


    【解决方案1】:

    正如guide 解释的那样,您应该为您的请求选择正确的代理。我使用 Java Streams 更新了更改的示例代码:

    URI uri = new URI("https://www.whatever.com");
    
    Proxy proxy = Optional.ofNullable(ProxySelector.getDefault())
            .map(ps -> ps.select(uri))
            .stream().flatMap(List::stream)
            .max(Comparator.comparing(Proxy::type))
            .orElse(Proxy.NO_PROXY);
    

    此示例按以下优先级使用代理:SOCKSHTTPDIRECT。您可以通过将其包装在单独的方法中来轻松更改它:

    private static int getPriority(Proxy.Type type) {
        switch (type) {
            case HTTP:
                return 2;
            case SOCKS:
                return 1;
        }
        return 0;
    }
    

    .max() 中与Comparator.comparingInt(p -> getPriority(p.type())) 一起使用。或者,您可以使用我上面链接的官方示例代码。

    您现在可以在 Jsoup 连接中使用 proxy

    Document doc = Jsoup.connect(uri.toString())
            .proxy(proxy)
            .get();
    

    除此之外,您应该确保您的连接是通过代理进行的。如果您的代理需要身份验证,请遵循指南的this part。对于故障排除,您可以使用Proxy Vole Tester

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2023-03-25
      • 2021-10-07
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多