Fess CrawlerのHTTPクライアントに、SOCKS5プロキシを指定する機能が追加されました。対象はHc5HttpClientです。
ホストとポートを両方指定する
初期状態ではsocksProxyHostもsocksProxyPortも未設定で、SOCKSプロキシを使いません。両方を設定した場合だけ、接続マネージャーにSOCKSプロキシを渡します。ポートだけの指定では有効にならず、1080などが自動補完されるわけでもありません。
Hc5HttpClientを直接生成・設定するJavaアプリケーションでは、初期化前に次のように指定します。1080は例で、実際のプロキシの待受ポートへ変更します。
Hc5HttpClient client = new Hc5HttpClient();
client.setSocksProxyHost("proxy.internal.example");
client.setSocksProxyPort(1080);
// この後、アプリケーション側の通常の初期化・実行処理を行う
初期化パラメーターマップを使う場合のキーもsocksProxyHostとsocksProxyPortです。HTTPプロキシのproxyHost・proxyPortとは別の指定です。Fess管理画面にSOCKS専用入力欄を追加するPRではないため、画面にこの名前を入力すればそのまま使えるとは判断しません。Fessへ組み込む場合は、実際にHc5HttpClientが選ばれ、パラメーターが渡る構成かを確認します。
認証と名前解決の制限
SOCKS認証には対応していません。また、宛先ホスト名はクローラー側で解決し、プロキシへはIPアドレスを渡します。プロキシ側だけが社内ホスト名を解決できる構成や、リモートDNSを前提とする接続では、この設定だけでは届きません。
Hc4HttpClientの動作は変わりません。導入時は小さなHTTP取得でプロキシを通ること、SOCKSを未設定に戻した場合の経路、クローラー環境からのDNS解決を確認します。PRでは組み込みSOCKS5サーバーを使った中継テストが報告されていますが、本記事では実環境のFessクロールを検証したとはしていません。