Подключение из Java
Пример отправляет запрос через выделенную статическую точку подключения. Данные берутся из окружения процесса; по умолчанию HTTP-прокси используется для HTTPS-адреса. Получения и ротации IP нет.
Подготовка
Задайте PROXY_HOST, PROXY_PORT, PROXY_USERNAME, PROXY_PASSWORD в терминале, контейнере или среде развёртывания программы. Используйте актуальные данные панели и порт выбранного протокола. Не помещайте реальные пароли в репозиторий, журналы или клиентский код.
Среда и зависимости
Используйте JDK 11+ и добавьте зависимость в Maven-проект. Сохраните код как src/main/java/ProxyExample.java и запустите main из IDE или через плагин Maven Exec. Пример использует HTTP-порт с аутентификацией; HTTPS идёт через CONNECT.
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>Настройка подключения
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.time.Duration;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public final class ProxyExample {
private static String required(String name) {
String value = System.getenv(name);
if (value == null || value.isBlank()) {
throw new IllegalArgumentException("Missing environment variable: " + name);
}
return value;
}
public static void main(String[] args) {
String host = required("PROXY_HOST").replace("[", "").replace("]", "");
int port = Integer.parseInt(required("PROXY_PORT"));
String credential = Credentials.basic(required("PROXY_USERNAME"), required("PROXY_PASSWORD"));
OkHttpClient client = new OkHttpClient.Builder()
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port)))
.proxyAuthenticator((route, response) -> {
if (response.request().header("Proxy-Authorization") != null) return null;
return response.request().newBuilder()
.header("Proxy-Authorization", credential).build();
})
.connectTimeout(Duration.ofSeconds(10))
.readTimeout(Duration.ofSeconds(30))
.callTimeout(Duration.ofSeconds(40))
.build();
Request request = new Request.Builder().url("https://ip123.in/ip.json").build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.err.println("HTTP status: " + response.code());
System.exit(1);
}
if (response.body() != null) System.out.println(response.body().string());
} catch (java.io.IOException error) {
System.err.println("Proxy request failed; check network and credentials");
System.exit(1);
}
}
}Этот пример предназначен для HTTP-прокси. Для SOCKS5 с именем и паролем нужна реализация с явной поддержкой такой аутентификации. Замена Proxy.Type.HTTP на SOCKS не переносит HTTP-аутентификатор.
Если подключение не работает
Если пример работает, а приложение нет, проверьте процесс, реально выполняющий запрос, настройки SDK, тайм-ауты и повторы. Не отключайте проверку TLS-сертификатов. Пример не выводит ошибки с данными доступа; диагностические журналы тоже нужно очищать. См. FAQ.