protected Proxy getNextProxy() {
			if (this.proxies.isEmpty()) {
				System.out.println(">>> GET NEW PROXIES: ");
				try {
					if (useLocalProxyFile) { // Local Proxy List
						if (proxyFile == null)
							return null;
						File in = new File(proxyFile);
						if (!in.isFile())
							throw new IllegalArgumentException("input must be a file");
						BufferedReader reader = null;
						try {
							reader = new BufferedReader(new InputStreamReader(
									new FileInputStream(in), "UTF-8"));

						// Parse proxies
						String line = null;
						String host = null;
						int port;
						Type type = null;
						while ((line = reader.readLine()) != null) {
							host = line.substring(0, line.indexOf(':') - 1);
							port = Integer.parseInt(line.substring(line
									.indexOf(':') + 1));
							type = Type.HTTP;
							Proxy proxy = new Proxy(host, port, type);
							System.out.println("host: "+host+" port: "+port);
							proxies.add(proxy);
						}
						proxyFile = null;

						} finally {
							if (reader != null)
								reader.close();
						}
					} else { // Get Proxies from HideMyAss
						HideMyAssProxyRequest request = new HideMyAssProxyRequest(
								this.first ? 1000
										: HideMyAssProxyRequest.PAGE_PROXY_LIMIT);
						this.first = false;
						this.proxies.addAll(request.submit());
					}
				} catch (IOException e) {
					System.out.println(">>> EXCEPTION : " + e.getMessage());
				}
			}
			if (this.proxies.isEmpty())
				return null;
			Proxy proxy = this.proxies.remove(0);
			System.out.println(">>> USE PROXY : " + proxy);
			return proxy;
		}