import org.htmlunit.ProxyConfig;
import org.htmlunit.WebClient;

try (WebClient browser = new WebClient()) {
    ProxyConfig proxy =
        new ProxyConfig("proxy.example.net", 8080, "http");
    proxy.addHostsToProxyBypass("localhost");
    browser.getOptions().setProxyConfig(proxy);

    browser.getPage("https://example.net/");
}

Задайте ProxyConfig в WebClient, который загружает страницу перед переходом. Здесь используется пространство имён org.htmlunit; более старые зависимости использовали com.gargoylesoftware.htmlunit и могут предлагать другие конструкторы.

Замените хост прокси и целочисленный порт на неаутентифицированного кандидата из списка HTTP-прокси для этого примера публичной страницы. "http" конструктора описывает посредника, даже для HTTPS-страницы. Не добавляйте префикс URL в аргумент имени хоста и не меняйте протокол только ради соответствия назначению.

Значения обхода — это регулярные выражения, а не правила PAC и не список окружения через запятую. Если запрос неожиданно идёт напрямую, сравните запрошенный хост с этими шаблонами и убедитесь, что он использует этот WebClient.

Отдельно созданный WebClient или HTTP-клиент не наследует этот объект конфигурации. Настраивайте переиспользуемые экземпляры до их работы, а не меняйте глобальное состояние вокруг параллельных запросов. Проверка назначения и вход на сайт остаются отдельными; аутентифицированному прокси также нужен интерфейс учётных данных установленной версии HtmlUnit. Например, HtmlUnit 4.21.0 ограничивает учётные данные прокси по хосту и порту.

Похожие статьи