WEBアクセスごとにプロキシの変更
大学の研究で,様々なデータを集めるために
JavaプログラムでWEB上にあるデータをスクレイピングしています.
データアクセスは,複数台のフォワードプロキシサーバ(apache)を利用しています.
アクセスが一台のプロキシサーバに集中しないように,
プロキシサーバをラウンドロビンで変えるようなプログラムを下記のように書きました.
sysoutで吐いたコマンドライン上の出力には,
プロキシサーバへのアクセスがラウンドロビンで行われているように出ているのですが,
プロキシサーバのログを確認すると,1台にアクセスが集中してしまっています.
(20秒に1アクセスにすると分散できているようです.5秒以上になると集中してしまうようです)
HttpURLConnectionクラスまたはProxyクラスは,
アクセスのたびに,プロキシサーバを変更することは不可能なのでしょうか?
もし,少しでも情報をお知りでしたら,ご助言頂けますと幸いです.
どうぞよろしくお願いいたします.
private DataInputStream dataAccess(String proxy_url, String page_url) throws Exception {
URL url = new URL(page_url);//WEBページ
String proxy_port = "80";
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy_url, Integer.parseInt(proxy_port)));
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
connection.setAllowUserInteraction(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("GET");
connection.addRequestProperty("Cookie", this.getCookie());
connection.connect();
System.out.println(proxy_url+":"+page_url);
int httpStatusCode = connection.getResponseCode();
if (httpStatusCode != HttpURLConnection.HTTP_OK) {
System.err.println("File Not Found:" + urlStr);
throw new Exception();
}
// 取得したデータをDataInputStreamで返す
return new DataInputStream(connection.getInputStream());;
}