HtmlUnit のプロキシ資格情報をプロキシホストに限定する
HtmlUnit のプロキシを構成し、資格情報プロバイダーの host/port スコープを使います。NTLM 用に domain と workstation の各フィールドも指定します。
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 を使っています。