- Хост
- 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 в Python requests. Займе кілька хвилин.
Крок 1. Візьміть дані проксі в особистому кабінеті
Відкрийте план і скопіюйте хост gw.prokso.com, порт, логін і пароль. Порт 823 — HTTP, 824 — SOCKS5 (обидва дають новий IP на кожен запит); порти 10000–20000 — фіксований IP (sticky-сесія) до 120 хвилин, працюють і як HTTP, і як SOCKS5 (кожен порт — окрема адреса). Країну задають у логіні: логін__cr.ua.

Крок 2. Встановіть бібліотеку
Потрібен Python 3 і бібліотека requests: pip install requests. Для SOCKS5 — pip install "requests[socks]".
Крок 3. Передайте проксі в запит
Вкажіть проксі в словнику proxies для http і https. Код нижче виведе IP-адресу, з якою сайт бачить запит.
import requests
proxy = "http://ЛОГІН:ПАРОЛЬ@gw.prokso.com:823"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
print(r.json())Крок 4. SOCKS5 і фіксований IP
Для SOCKS5 замініть схему на socks5h:// і порт на 824. Щоб кілька запитів ішли з одного IP, використайте порт 10000–20000 замість 823 чи 824 — він працює і з http://, і з socks5h://.
# pip install "requests[socks]"
proxy = "socks5h://ЛОГІН:ПАРОЛЬ@gw.prokso.com:824" # socks5h — DNS теж через проксіКрок 5. Перевірте вивід скрипта
Запустіть код із кроку 3: він запитує https://api.ipify.org через проксі й друкує {"ip": "…"} — адресу, яку бачить сайт. Вона має відрізнятися від вашої. Запустіть двічі: на 823 IP зміниться, на фіксованому порту лишиться та сама. Сторінка «Мій IP» у браузері тут не підходить — браузер іде без цього проксі.

Сесія, тайм-аути та повтори
Для серії запитів створіть requests.Session() і задайте проксі один раз: сесія повторно використовує з'єднання та працює помітно швидше. Тайм-аут ставте завжди — без нього запит, що завис, зупинить скрипт назавжди. Через резидентські та мобільні адреси відповідь іде довше, ніж напряму, тому 30 секунд — розумна відправна точка.
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
proxy = "http://USERNAME:PASSWORD@gw.prokso.com:823"
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
# retry only temporary failures, with a growing pause
retry = Retry(total=3, backoff_factor=1, status_forcelist=[502, 503, 504])
s.mount("http://", HTTPAdapter(max_retries=retry))
s.mount("https://", HTTPAdapter(max_retries=retry))
r = s.get("https://prokso.com/ip", timeout=30)
print(r.status_code, r.text)Повторювати варто лише тимчасові збої: 502, 503, 504 і тайм-аути. На порту 823 кожен повтор піде з нового IP. Коди 403 і 429 надходять від сайту: миттєвий повтор їх не виправить і лише витратить трафік.
Що означають помилки
- ProxyError з кодом 407. Проксі не прийняв логін або пароль. Перевірте рядок і залишок трафіку на плані.
- ConnectTimeout. Скрипт не достукався до проксі: перевірте хост і порт, а також чи не закритий порт у вашій мережі.
- ReadTimeout. Проксі доступний, але сайт не відповів вчасно. Збільште тайм-аут або повторіть запит.
- Missing dependencies for SOCKS support. Не встановлено пакет для SOCKS: виконайте
pip install "requests[socks]".
Розшифрування кодів відповіді — на сторінці коди помилок проксі.
Як витрачати менше трафіку
Трафік рахується за обсягом відповідей. Запитуйте дані через API сайту, якщо він є: JSON важить у рази менше за HTML-сторінку. Не завантажуйте повторно те, що вже отримали, і не завантажуйте картинки, якщо потрібен лише текст. Оцінити обсяг заздалегідь допоможе калькулятор трафіку.
Питання й відповіді
Як зробити багато потоків?
Використовуйте concurrent.futures або asyncio з aiohttp. Кожен потік може йти через той самий порт 823 — IP буде різний.
Чому requests іде через проксі, хоча я його не задавав?
Бібліотека читає змінні середовища <code>HTTP_PROXY</code> і <code>HTTPS_PROXY</code>. Щоб вимкнути це, задайте для сесії <code>trust_env = False</code>.
Як закодувати спецсимволи в паролі?
Пропустіть логін і пароль через <code>urllib.parse.quote(..., safe="")</code>, перш ніж збирати адресу проксі. Інакше символи <code>@</code> і <code>:</code> зламають розбір адреси.
Як задати країну в коді?
Країну записано в логіні, наприклад <code>USERNAME__cr.de</code>. Змінюйте логін — адреса й порт залишаються тими самими.