3

Javaを使用して一連のプロキシ(複数)を介してWebサイトをロードしようとしています。すべてのリクエストは別のチェーンを使用できる必要があります。ここで私の最初の迅速で汚い試み:

// My proxies and there ports marked with pIP1 pPort1, pIP2 pPort2...
Socket socket = new Socket(pIP1, pPort1);
OutputStream out = socket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String connectOverProxy1ToProxy2 = "CONNECT " + pIP2 + ":" + pPort2 + " HTTP/1.1\n\n";
String connectHost = "GET http://stackoverflow.com/ HTTP/1.1\n\n";

out.write((connectOverProxy1ToProxy2 + connectHost).getBytes());
out.flush();

String inputLine;
while ((inputLine = in.readLine()) != null)
  System.out.println(inputLine);

out.close();
in.close();

応答として、私はこれを受け取りました:

HTTP/1.0 200 Connection established
Proxy-agent: tinyproxy/1.8.3

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: public, max-age=30
Expires: Mon, 08 Apr 2013 11:42:08 GMT
X-Frame-Options: SAMEORIGIN
Date: Mon, 08 Apr 2013 11:41:36 GMT
Last-Modified: Mon, 08 Apr 2013 11:41:08 GMT
Vary: *
Content-Length: 182825

<!DOCTYPE html>
<html>
[..]
</html>

問題に行きましょう。ここで、Java パッケージの完全な処理と機能を使用するために、URL/URLConnections を使用してページをロードしようとします。単一のプロキシの代わりに一連のプロキシで URL/URLConnection を使用する方法はありますか?

助けてくれてありがとう...

4

1 に答える 1

0

このHttpUrlConnectionクラスは、プロキシ関連のシステム設定を使用してプロキシをサポートします。

ただし、 ProxySelector.setDefault()を呼び出して独自のProxySelectorサブクラスを提供することで、デフォルトのプロキシ選択メカニズムを変更できます。

メソッドをオーバーライドするselect(URL)ことで、その URL に必要なプロキシを返すことができます。最初に、チェーン内の「最初の」プロキシだけを返しHttpUrlConnectionて、プロキシ チェーンを自動的に通過するかどうかを確認します。

于 2013-04-08T12:26:39.540 に答える