Как использовать HTTP-прокси в java
Я пишу код, который подключается к веб-сайтам и проверяет код, например, искатель. Но мне нужно подключиться через прокси-сервер и изменить IP-адрес (поэтому он не отображает IP-адрес клиента в журналах сервера).
Как это можно сделать через java?
Ответы
Ответ 1
Вы можете использовать свойства системы java для настройки прокси-сервера или передать его в качестве параметров командной строки.
Вы можете найти некоторые детали и образцы здесь.
Пример: перед открытием соединения
System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");
Или вы можете использовать сетевые прокси по умолчанию, настроенные в sytem
System.setProperty("java.net.useSystemProxies", "true");
Так как Java 1.5 вы можете создать экземпляр прокси и передать его методу openConnection()
.
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
URL url = new URL("http://www.yahoo.com");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
uc.connect();
Или, как предложили lisak, вы можете использовать некоторые сторонние библиотеки, которые лучше всего помогут вам.
Ответ 2
Или вы также можете использовать HttpClient, который лучше всего соответствовал бы вашим потребностям. Проверьте документацию, она краткая и очень информативная.
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Ответ 3
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
URL url = new URL("http://www.yahoo.com");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
uc.connect();
Это сработало для меня. Я смог использовать прокси для конкретного соединения или передачи. Ранее мы использовали System.setProperty, который устанавливал его на системном уровне, и все внутренние и внешние запросы начали использовать один и тот же прокси.
Также Proxy.Type.HTTP работает как для http, так и для https.