- 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 (stały 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 Guzzle (PHP). Zajmie 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ę do 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. Zainstaluj Guzzle
W folderze projektu uruchom composer require guzzlehttp/guzzle.
Krok 3. Ustaw proxy w opcjach klienta
Opcja proxy przyjmuje URL proxy z loginem i hasłem. Ustawiona w konstruktorze klienta działa dla wszystkich jego żądań; możesz ją też przekazać do pojedynczego żądania.
<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client([
'proxy' => 'http://USERNAME:PASSWORD@gw.prokso.com:823',
'timeout' => 30,
]);
echo $client->get('https://api.ipify.org?format=json')->getBody();Krok 4. SOCKS5 i proxy dla poszczególnych protokołów
Dla SOCKS5 zmień URL na socks5h://USERNAME:PASSWORD@gw.prokso.com:824 – litera h oznacza, że zapytania DNS też idą przez proxy. Opcja proxy przyjmuje też tablicę z kluczami http, https i no, jeśli niektóre adresy mają omijać proxy.
Krok 5. Sprawdź wynik
Uruchom przykład: skrypt wywołuje 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. Strona Mój IP w przeglądarce nic tu nie pokaże, bo przeglądarka łączy się bezpośrednio.

Limity czasu i obsługa błędów
Ustaw oba limity: connect_timeout na połączenie z proxy i timeout na całe żądanie. Domyślnie Guzzle czeka bez ograniczeń. Opcja http_errors ustawiona na false pozwala samodzielnie obsługiwać kody odpowiedzi zamiast dostawać wyjątki:
<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client([
'proxy' => 'http://USERNAME:PASSWORD@gw.prokso.com:823',
'connect_timeout' => 10,
'timeout' => 30,
'http_errors' => false, // handle status codes yourself
]);
$res = $client->get('https://prokso.com/ip');
echo $res->getStatusCode(), ' ', $res->getBody();Kod 407 oznacza, że proxy nie przyjęło loginu lub hasła albo że w planie skończył się transfer. Kody 403 i 429 pochodzą od strony. Wyjaśniamy je na stronie kody błędów proxy.
Wiele żądań naraz
Do równoległego pobierania użyj GuzzleHttp\Pool z opcją concurrency: ogranicza ona liczbę jednoczesnych żądań. Zacznij od 10 i zwiększaj, dopóki strona odpowiada bez błędów 429. Na porcie 823 każde żądanie wychodzi z nowego IP.
Znaki specjalne w loginie i haśle
Adres proxy to URL, więc znaki @, : i # w haśle psują jego parsowanie. Przepuść login i hasło przez rawurlencode(), zanim zbudujesz ciąg. Kraj ustawiasz w loginie, np. USERNAME__cr.de, więc kodować trzeba pełny, gotowy login.
Jeśli proxy nie działa
Pytania i odpowiedzi (FAQ)
Jak zachować jeden IP dla kilku żądań?
Zamień port 823 na port ze stałym IP z zakresu 10000–20000: wszystkie żądania przez niego wyjdą z jednego adresu przez maksymalnie 120 minut.
Dostaję błąd proxy cURL. Co sprawdzić?
Sprawdź, czy protokół pasuje do portu: 823 to tylko HTTP, 824 – tylko SOCKS5, a porty 10000–20000 przyjmują oba. Kod 407 oznacza nieprawidłowy login lub hasło.
Czy potrzebuję rozszerzenia cURL dla PHP?
Zalecamy je. Z nim Guzzle działa szybciej i obsługuje SOCKS5. Bez niego używany jest handler strumieni PHP, który ma mniej możliwości.
Jak ustawić proxy w Laravel?
Klient HTTP w Laravel jest zbudowany na Guzzle: przekaż te same opcje przez Http::withOptions(['proxy' => ...]).
Czy mogę puścić niektóre adresy z pominięciem proxy?
Tak. Przekaż proxy jako tablicę i wypisz wyjątki pod kluczem no.