7月前 319 0 0

PAC是什么?

一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理其或者直接访问。 当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。 浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。 更多详细 http://findproxyforurl.com/

大多数企业网络通过JavaScript使用proxy.pac文件动态定义它们的代理。此文件包含一个名为FindProxyForUrl的JavaScript函数。浏览器支持这个很容易,他们通过DHCP或DNS服务器(使用WPAD文件机制)找出proxy.pac文件的位置。然后,他们使用其内置的JavaScript解析proxy.pac文件,并根据请求的主机,获取正确的代理使用。

java使用获取浏览器代理

Bernd Rosstauscher Google上 proxy-vole库 自2009年以来没有更新了,并且没有可用Maven。有网友在github上(https://github.com/MarkusBernhardt/proxy-vole)开发了个分支版本

获取代理信息

// Use the static factory method getDefaultProxySearch to create a proxy search instance 
// configured with the default proxy search strategies for the current environment.
ProxySearch proxySearch = ProxySearch.getDefaultProxySearch();

// Invoke the proxy search. This will create a ProxySelector with the detected proxy settings.
ProxySelector proxySelector = proxySearch.getProxySelector();

// Install this ProxySelector as default ProxySelector for all connections.
ProxySelector.setDefault(proxySelector);

java动态设置pac文件

https://github.com/carrot-garden/carrot-jnlper/tree/master/carrot-jdk7-jnlp-decompile-deploy 下载并且导入deploy.jar到你的项目中

private static void getProxy(String url) throws ProxyConfigException, MalformedURLException, ProxyUnavailableException {
    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());
    }
}

0 条评论

还没有人评论。
您需要登录后才可以回复。登录 | 立即注册