私はhtmlunitでプロキシを使用しています.私のプロキシリストにはhttpとsocksの両方が混在しています.htmlunitに渡される次の選択されたプロキシがhttpまたはsocksのどちらであるかはわかりません.htmlunitは自動的にタイプを決定し、適切なルールを使用します.そのプロキシ経由で接続していますか?
4 に答える
プロキシを混在させたアプリケーションも作成しましたが、それは少し前のことです。そのバージョンの HtmlUnit では、プロキシが SOCKS であるかどうかを明示的に伝える必要があり、それ以外の場合は HTTP プロキシであると想定していました。変更ログを簡単に調べたところ、これが変更されたことを示すものは何も見つかりませんでした。したがって、答えはノーです。HtmlUnit にプロキシが SOCKS であることを伝えないと、プロキシは HTTP であると見なされます。
プロキシのタイプを確認するには、次のようなものを使用できます。
SocketAddress addr = new InetSocketAddress("proxyAddress", port);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //or Proxy.Type.SOCKS
URL url = new URL("http://google.com");
URConnection conn = url.openConnection(proxy);
コードが失敗した場合 (つまり、例外がスローされた場合)、プロキシが停止しているか、SOCKS である可能性が高くなります。(いずれにせよ、HtmlUnit は最初のケースで例外をスローします。または、プロキシが有効かどうか確信が持てない場合は、Proxy.Type.SOCKS を使用して同じテストを再度実行できます。)
このフレームワークはプロキシ タイプを検出し、正しい Socks/Http/Https プロキシ構成で HtmlUnit WebClient をインスタンス化できます: https://github.com/subes/invesdwin-webproxy
基本的に、プロキシ リストを維持する際の試行錯誤のアプローチを自動化します。したがって、独自のコードでそれについて心配する必要はありません。