- Хост
- 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 (sticky-сесія) до 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 кожна спроба піде вже з нової адреси.