- Host
- gw.prokso.com
- Port
- 823 HTTP · 824 SOCKS5 — nowy IP przy każdym żądaniu · 10000–20000 stały IP na całą sesję, HTTP(S) i SOCKS5
- Login i hasło
- w panelu klienta, na stronie planu
Gotowe wiersze w potrzebnym formacie wygenerujesz w panelu klienta: wybierz kraj, typ IP i protokół.
- Host gw.prokso.com, porty 823 (HTTP), 824 (SOCKS5), 10000–20000 (sesje ze stałym IP, HTTP lub SOCKS5)
- Login i hasło znajdziesz w panelu klienta na stronie planu
- Sprawdzaj IP w odpowiedzi na samo żądanie wysłane przez proxy: strona „Mój IP” w przeglądarce nie testuje Twojego skryptu
Instrukcja krok po kroku, jak podłączyć proxy Prokso w Javie. Zajmie Ci to kilka minut.
Krok 1. Pobierz dane proxy z panelu klienta
Otwórz swój plan i skopiuj host gw.prokso.com, port, login i hasło. Port 823 to HTTP, a 824 to SOCKS5 (oba dają nowy IP przy każdym żądaniu); porty 10000–20000 utrzymują jeden IP przez całą sesję – maksymalnie 120 minut i działają zarówno jako HTTP, jak i SOCKS5 (każdy port to osobny adres). Kraj ustawiasz w loginie: username__cr.ua.
Krok 2. Użyj Javy 11 lub nowszej
Przykład korzysta z wbudowanego java.net.http.HttpClient, dostępnego w JDK od wersji 11. Zewnętrzne biblioteki nie są potrzebne.
Krok 3. Włącz uwierzytelnianie Basic dla tunelu
Domyślnie JDK nie wysyła loginu i hasła proxy, gdy otwiera stronę https przez tunel, i żądanie kończy się błędem 407. Włącza to właściwość systemowa jdk.http.auth.tunneling.disabledSchemes ustawiona na pustą wartość. Ustaw ją na samym początku programu, jak w przykładzie, albo flagą uruchomieniową -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("USERNAME", "PASSWORD".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());
}
}Krok 4. Przekaż klientowi proxy i dane logowania
ProxySelector.of ustawia adres proxy, a Authenticator podaje login i hasło. HttpClient sam odpowiada na żądanie uwierzytelnienia ze strony proxy. Utwórz klienta raz i używaj go do wszystkich żądań.
Krok 5. SOCKS5 i stały IP
HttpClient działa tylko z proxy HTTP. Do SOCKS5 potrzebujesz starszego HttpURLConnection z java.net.Proxy typu SOCKS na porcie 824 i tym samym Authenticator, zainstalowanym przez Authenticator.setDefault. Aby wysłać serię żądań z jednego IP, przejdź na port ze stałym IP z zakresu 10000-20000.
Krok 6. Jeśli połączenie się nie udaje
Sprawdź host gw.prokso.com, port i schemat: HTTP na 823, SOCKS5 na 824, dowolny z nich na portach 10000-20000. Błąd 407 oznacza nieprawidłowy login lub hasło albo to, że w planie skończył się transfer: sprawdź saldo na stronie planu w panelu klienta. Przekroczenie czasu najczęściej oznacza literówkę w porcie albo klienta, który oczekuje innego protokołu. Jeśli korzystasz z listy dozwolonych IP, upewnij się, że jest na niej zewnętrzny adres dokładnie tej maszyny, na której działa kod.
Krok 7. Sprawdź wynik
Uruchom przykład: program odpytuje https://api.ipify.org i wypisuje IP, który widzi strona. Powinien to być adres proxy, a nie Twój. Błąd 407 oznacza nieprawidłowy login lub hasło albo to, że w planie skończył się transfer. Strona „Mój IP” w przeglądarce tu nie pomoże: przeglądarka łączy się bezpośrednio.
Jeśli proxy nie działa
Pytania i odpowiedzi (FAQ)
Dlaczego pojawia się błąd 407, skoro login jest poprawny?
Najczęściej nie ustawiono właściwości jdk.http.auth.tunneling.disabledSchemes, więc JDK nie wysyła danych logowania dla stron https. Ustaw ją przed utworzeniem klienta albo flagą -D przy uruchomieniu.
Czy mogę obejść się bez loginu i hasła?
Tak. Włącz w planie listę dozwolonych IP i dodaj adres serwera, na którym działa program. Wtedy nie potrzebujesz ani Authenticator, ani właściwości systemowej.
Którego portu użyć?
Port 823 (HTTP) lub 824 (SOCKS5) daje nowy IP przy każdym żądaniu, co pasuje do zbierania danych. Port z zakresu 10000-20000 utrzymuje jeden IP do 120 minut – do sesji, w których logujesz się na konto. Plan pozwala na maksymalnie 1000 jednoczesnych połączeń.
Jak wybrać kraj?
Kraj jest częścią loginu proxy. Wygeneruj w panelu klienta linię dla potrzebnego kraju i użyj jej loginu w kodzie; reszta adresu pozostaje bez zmian.
Co zrobić, jeśli część żądań kończy się błędem?
Przy zbieraniu danych niektóre adresy mogą być wolne lub niedostępne. Dodaj do kodu kilka ponownych prób z przerwą: na porcie 823 lub 824 każda kolejna próba wychodzi z nowego adresu.