Я пишу код, который подключается к веб-сайтам и проверяет код, например, искатель. Но мне нужно подключиться через прокси-сервер и изменить IP-адрес (поэтому он не отображает IP-адрес клиента в журналах сервера).
Как это можно сделать через java?
Я пишу код, который подключается к веб-сайтам и проверяет код, например, искатель. Но мне нужно подключиться через прокси-сервер и изменить IP-адрес (поэтому он не отображает IP-адрес клиента в журналах сервера).
Как это можно сделать через java?
Вы можете использовать свойства системы 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, вы можете использовать некоторые сторонние библиотеки, которые лучше всего помогут вам.
Или вы также можете использовать HttpClient, который лучше всего соответствовал бы вашим потребностям. Проверьте документацию, она краткая и очень информативная.
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
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.