- Хост
- 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 в Guzzle (PHP). Займёт несколько минут.
Шаг 1. Возьмите данные прокси в кабинете
Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.

Шаг 2. Установите Guzzle
В папке проекта выполните composer require guzzlehttp/guzzle.
Шаг 3. Задайте прокси в настройках клиента
Опция proxy принимает адрес прокси с логином и паролем. Заданная в конструкторе клиента, она действует для всех его запросов; её можно передать и в отдельный запрос.
<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client([
'proxy' => 'http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823',
'timeout' => 30,
]);
echo $client->get('https://api.ipify.org?format=json')->getBody();Шаг 4. SOCKS5 и отдельные прокси по протоколу
Для SOCKS5 замените адрес на socks5h://ЛОГИН:ПАРОЛЬ@gw.prokso.com:824 — буква h означает, что и DNS-запросы пойдут через прокси. Опция proxy также принимает массив с ключами http, https и no, если для части адресов прокси не нужен.
Шаг 5. Проверьте вывод
Запустите пример: скрипт обращается к https://api.ipify.org и печатает IP, который видит сайт. Это должен быть адрес прокси, а не ваш. Ошибка 407 означает неверный логин или пароль. Страница «Мой IP» в браузере здесь не поможет: браузер идёт напрямую.

Тайм-ауты и обработка ошибок
Задайте оба предела: connect_timeout — на соединение с прокси, timeout — на весь запрос. По умолчанию Guzzle ждёт без ограничения. Опция http_errors в значении false позволяет самому разбирать коды ответа вместо исключений:
<?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();Код 407 означает, что прокси не принял логин или пароль либо на плане закончился трафик. Коды 403 и 429 приходят от сайта. Расшифровка — на странице коды ошибок прокси.
Много запросов одновременно
Для параллельной загрузки используйте GuzzleHttp\Pool с опцией concurrency: она ограничивает число одновременных запросов. Начните с 10 и повышайте, пока сайт отвечает без ошибок 429. На порту 823 каждый запрос уйдёт с нового IP.
Спецсимволы в логине и пароле
Адрес прокси — это URL, поэтому символы @, : и # в пароле ломают его разбор. Пропустите логин и пароль через rawurlencode() перед тем, как собирать строку. Страна задаётся в логине, например USERNAME__cr.de, — кодировать нужно уже готовый логин целиком.
Вопросы и ответы
Как держать один IP для нескольких запросов?
Замените порт 823 на фиксированный порт из диапазона 10000–20000: все запросы через него будут идти с одного адреса до 120 минут.
Получаю ошибку cURL про прокси. Что проверить?
Проверьте соответствие протокола и порта: 823 — только HTTP, 824 — только SOCKS5, порты 10000–20000 принимают оба. Код 407 означает неверный логин или пароль.
Нужно ли расширение cURL для PHP?
Желательно. С ним Guzzle работает быстрее и поддерживает SOCKS5. Без него используется потоковый обработчик PHP, у которого возможностей меньше.
Как задать прокси в Laravel?
HTTP-клиент Laravel построен на Guzzle: передайте те же опции через <code>Http::withOptions(['proxy' => ...])</code>.
Можно ли часть адресов пустить мимо прокси?
Да. Передайте <code>proxy</code> массивом и перечислите исключения в ключе <code>no</code>.