HtmlUnit のプロキシ設定は仲介者を選び、その資格情報プロバイダーが対象のホストとポートのアカウントを供給します。NTLM プロキシの場合、HtmlUnit 4.21.0 の API には専用メソッドがあります:

String proxyHost = "proxy.example";
int proxyPort = 8080;
DefaultCredentialsProvider credentials = new DefaultCredentialsProvider();
credentials.addNTLMCredentials(
    user, password.toCharArray(), proxyHost, proxyPort, workstation, domain);

try (WebClient browser = new WebClient()) {
    browser.getOptions().setProxyConfig(
        new ProxyConfig(proxyHost, proxyPort, "http"));
    browser.setCredentialsProvider(credentials);
    HtmlPage page = browser.getPage("https://www.example.com/");
}

これらのクラスは現在の org.htmlunit パッケージを使い、HtmlPage は org.htmlunit.html にあります。プロキシ アカウントの workstation と domain は環境に合わせて指定してください。接続先の Web サイトは NTLM の domain フィールドではありません。

一般的なユーザー名/パスワードの資格情報では、同じプロバイダーが addCredentials を提供し、ユーザー名、char 配列のパスワード、ホスト、ポート、realm を渡せます。null の realm はその限定されたエンドポイント上の任意の realm に適用されます。

プロキシの認証方式と実際に導入した依存関係に合うオーバーロードを使ってください。古い HtmlUnit 2.x の例はパッケージ名が異なり、文字列パスワードのシグネチャを持つ場合があります。上記のコードは 4.21.0 の API を使っています。

関連記事