1

私はhtmlunitでプロキシを使用しています.私のプロキシリストにはhttpとsocksの両方が混在しています.htmlunitに渡される次の選択されたプロキシがhttpまたはsocksのどちらであるかはわかりません.htmlunitは自動的にタイプを決定し、適切なルールを使用します.そのプロキシ経由で接続していますか?

4

4 に答える 4

1

プロキシを混在させたアプリケーションも作成しましたが、それは少し前のことです。そのバージョンの 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 を使用して同じテストを再度実行できます。)

于 2011-07-26T14:22:03.930 に答える
0

このフレームワークはプロキシ タイプを検出し、正しい Socks/Http/Https プロキシ構成で HtmlUnit WebClient をインスタンス化できます: https://github.com/subes/invesdwin-webproxy

基本的に、プロキシ リストを維持する際の試行錯誤のアプローチを自動化します。したがって、独自のコードでそれについて心配する必要はありません。

于 2017-06-25T18:16:51.187 に答える