如何使用Java中自动代理配置脚本(How to use automatic proxy confi

2019-06-25 07:45发布

我的Internet Explorer设置有用于Web访问自动代理文件(所谓的PAC)。 有没有办法使用这个对我的Java程序,也有办法吗?

我下面的Java代码似乎并没有使用代理的。

ArrayList<Proxy> ar = new ArrayList<Proxy>(ProxySelector.getDefault().select(new URI("http://service.myurlforproxy.com")));
for(Proxy p : ar){
  System.out.println(p.toString()); //output is just DIRECT T.T it should be PROXY.
}

我还设置Java的控制面板(控制 - > Java的),但相同的结果我的代理脚本。 我发现没有办法来设置Java的PAC文件编程。

人们使用http.proxyHost为System.setProperties(..),但是这是一个仅用于设置代理主机,而不是代理脚本(PAC文件)。

Answer 1:

哇! 我可以在Java的加载代理自动配置(PAC)文件。 请参阅下面的代码和包。

import com.sun.deploy.net.proxy.*;
.
.
BrowserProxyInfo b = new BrowserProxyInfo();        
b.setType(ProxyType.AUTO);
b.setAutoConfigURL("http://yourhost/proxy.file.pac");       
DummyAutoProxyHandler handler = new DummyAutoProxyHandler();
handler.init(b);

URL url = new URL("http://host_to_query");
ProxyInfo[] ps = handler.getProxyInfo(url);     
for(ProxyInfo p : ps){
    System.out.println(p.toString());
}

你已经有一个[com.sun.deploy.net.proxy]包你的机器上! 发现[deploy.jar]; d



Answer 2:

Java没有用于解析JS PAC文件的任何内置支持。 你只能靠自己。 你可以做的就是下载该文件,并从它解析代理主机。 你应该阅读此 。



Answer 3:

就我而言,我只是想出出什么.pac文件将返回,然后硬编码。



Answer 4:

基于@Jaeh答案我用下面的代码。 需要注意的是SunAutoProxyHandler实现AbstractAutoProxyHandler并没有叫PluginAutoProxyHandler替代具体实施但实现不显得那样强劲:

    BrowserProxyInfo b = new BrowserProxyInfo();
    b.setType(ProxyType.AUTO);
    b.setAutoConfigURL("http://example.com/proxy.pac");

    SunAutoProxyHandler handler = new SunAutoProxyHandler();
    handler.init(b);

    ProxyInfo[] ps = handler.getProxyInfo(new URL(url));
    for(ProxyInfo p : ps){
        System.out.println(p.toString());
    }


文章来源: How to use automatic proxy configuration script in Java
标签: java proxy pac