- Хост
- gw.prokso.com
- Порт
- 823 HTTP · 824 SOCKS5 — новый IP на каждый запрос · 10000–20000 фиксированный IP (sticky-сессия), HTTP(S) и SOCKS5
- Логин и пароль
- в кабинете, на странице плана
Готовые строки в нужном формате генерирует кабинет: выберите страну, тип IP и протокол.
- Хост — gw.prokso.com, порты 823 (HTTP), 824 (SOCKS5), 10000–20000 (фиксированный IP, HTTP или SOCKS5)
- Логин и пароль — в кабинете на странице плана
- Проверяйте IP в ответе самого запроса через прокси: страница «Мой IP» в браузере ваш скрипт не проверяет
Пошаговая инструкция, как подключить прокси Prokso в Java. Займёт несколько минут.
Шаг 1. Возьмите данные прокси в кабинете
Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.
Шаг 2. Возьмите Java 11 или новее
Пример использует встроенный java.net.http.HttpClient, который есть в JDK с версии 11. Сторонние библиотеки не нужны.
Шаг 3. Включите Basic-авторизацию для туннеля
По умолчанию JDK не отправляет логин и пароль прокси, когда открывает https-сайт через туннель, и запрос падает с ошибкой 407. Это включает системное свойство jdk.http.auth.tunneling.disabledSchemes с пустым значением. Задайте его в самом начале программы, как в примере, или параметром запуска -Djdk.http.auth.tunneling.disabledSchemes=.
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class Main {
public static void main(String[] args) throws Exception {
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(new InetSocketAddress("gw.prokso.com", 823)))
.authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("ЛОГИН", "ПАРОЛЬ".toCharArray());
}
})
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.ipify.org?format=json")).build();
System.out.println(client.send(request, HttpResponse.BodyHandlers.ofString()).body());
}
}Шаг 4. Передайте прокси и логин клиенту
Адрес прокси задаёт ProxySelector.of, а логин и пароль — Authenticator. HttpClient сам ответит на запрос авторизации от прокси. Создайте клиент один раз и используйте для всех запросов.
Шаг 5. SOCKS5 и фиксированный IP
HttpClient работает только с HTTP-прокси. Для SOCKS5 понадобится более старый HttpURLConnection с java.net.Proxy типа SOCKS на порту 824 и тот же Authenticator, установленный через Authenticator.setDefault. Для серии запросов с одного IP замените порт на фиксированный 10000–20000.
Шаг 6. Если соединение не устанавливается
Сверьте хост gw.prokso.com, порт и схему: HTTP на 823, SOCKS5 на 824, на портах 10000–20000 — оба. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик: проверьте остаток на странице плана в кабинете. Таймаут чаще всего значит, что порт введён с ошибкой или клиент ждёт другой протокол. Если работаете с доступом по IP, убедитесь, что в белый список добавлен внешний адрес именно той машины, где запускается код.
Шаг 7. Проверьте вывод
Запустите пример: программа обращается к https://api.ipify.org и печатает IP, который видит сайт. Это должен быть адрес прокси, а не ваш. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик на плане. Страница «Мой IP» в браузере здесь не поможет: браузер идёт напрямую.
Вопросы и ответы
Почему ошибка 407, хотя логин верный?
Чаще всего не задано свойство <code>jdk.http.auth.tunneling.disabledSchemes</code>: тогда JDK не отправляет логин для https-сайтов. Задайте его до создания клиента или параметром <code>-D</code> при запуске.
Можно ли обойтись без логина?
Да. Включите в плане доступ по IP (белый список) и добавьте адрес сервера, на котором работает программа. Тогда <code>Authenticator</code> и системное свойство не нужны.
Какой порт выбрать?
Порт 823 (HTTP) или 824 (SOCKS5) даёт новый IP на каждый запрос — удобно для сбора данных. Порт 10000–20000 держит один IP до 120 минут — для сессий со входом в аккаунт. На план приходится до 1000 одновременных соединений.
Как выбрать страну?
Страна записана в логине прокси. Сгенерируйте в кабинете строку для нужной страны и подставьте в код логин из неё — остальной адрес не меняется.
Что делать, если часть запросов падает?
При сборе данных отдельные адреса бывают медленными или недоступными. Добавьте в код несколько повторных попыток с паузой: на порту 823 или 824 каждая попытка пойдёт уже с нового адреса.