Вопрос по java, proxy, pac – Как использовать скрипт автоматической настройки прокси в Java

10

Мой Internet Explorer настроен на использование автоматического прокси-файла (так называемый 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 (Control-> Java), но результат тот же. и я не нашел способа программно установить файл PAC для Java.

Люди используют http.proxyHost для System.setProperties (..), но это только для настройки прокси-хоста, а не сценария прокси (файл PAC).

Ваш Ответ

4   ответа
1

Обратите внимание, что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());
    }
8

ожалуйста, смотрите ниже коды и пакет.

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

Кажется, у вас есть класс DummyAutoProxyHandler с пылью Pixie.
не могли бы вы дать ссылку для загрузки этой библиотеки
необходимыйSunAutoProxyHandler (как в другом ответе) иpolicy.all файл, как описано вthis article, То есть:grant { permission java.security.AllPermission "", ""; }; вpolicy.all и в Java добавитьSystem.setProperty("java.security.policy" , "policy.all");.
2

себе. Что вы можете сделать, это загрузить этот файл и разобрать прокси-хост с него. Вы должны прочитатьэтот.

1

что вернет файл .pac, а затем установил жесткий код.

20190301: подтверждено как рабочий раствор

Похожие вопросы