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

Крок 2. Встановіть бібліотеку
pip install aiohttp. Для SOCKS5 додатково знадобиться pip install aiohttp-socks.
Крок 3. Передайте проксі в запит
aiohttp приймає HTTP-проксі в параметрі proxy кожного запиту. Логін і пароль впишіть просто в адресу.
import asyncio
import aiohttp
PROXY = "http://ЛОГІН:ПАРОЛЬ@gw.prokso.com:823"
async def main():
async with aiohttp.ClientSession() as session:
async with session.get("https://api.ipify.org?format=json", proxy=PROXY) as r:
print(await r.json())
asyncio.run(main())
Крок 4. SOCKS5 через aiohttp-socks
Сам aiohttp SOCKS не підтримує. Створіть ProxyConnector з пакета aiohttp-socks і передайте його сесії — тоді всі запити сесії підуть через SOCKS5.
import asyncio
import aiohttp
from aiohttp_socks import ProxyConnector
async def main():
connector = ProxyConnector.from_url("socks5://ЛОГІН:ПАРОЛЬ@gw.prokso.com:824")
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get("https://api.ipify.org?format=json") as r:
print(await r.json())
asyncio.run(main())Крок 5. Багато запитів одночасно
Для паралельного збору даних беріть порт 823 (або 824 для SOCKS5): кожен запит отримає нову адресу. Щоб тримати один IP для серії запитів, використовуйте фіксований порт 10000–20000.
Крок 6. Перевірте вивід
Запустіть приклад: скрипт звертається до https://api.ipify.org і друкує IP, який бачить сайт. Це має бути адреса проксі, а не ваша. Помилка 407 означає неправильний логін або пароль. Сторінка «Мій IP» у браузері тут не допоможе: браузер іде напряму.
Обмеження паралельності й тайм-аути
aiohttp легко запускає тисячі запитів одночасно, і саме це найчастіше призводить до помилок 429 і тайм-аутів. Обмежте кількість одночасних запитів семафором і задайте загальний тайм-аут сесії:
import asyncio
import aiohttp
PROXY = "http://USERNAME:PASSWORD@gw.prokso.com:823"
URLS = ["https://prokso.com/ip"] * 20
async def fetch(session, sem, url):
async with sem: # no more than 10 requests at once
async with session.get(url, proxy=PROXY) as r:
return r.status, await r.text()
async def main():
sem = asyncio.Semaphore(10)
timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(timeout=timeout) as session:
results = await asyncio.gather(*(fetch(session, sem, u) for u in URLS), return_exceptions=True)
print(results)
asyncio.run(main())return_exceptions=True не дає одному збійному запиту скасувати решту: помилки повернуться у списку результатів, і їх можна повторити окремо.
Що означають помилки
- ClientHttpProxyError, статус 407. Проксі не прийняв логін або пароль чи закінчився трафік.
- ClientProxyConnectionError. Не вдалося з'єднатися з проксі: перевірте хост і порт.
- asyncio.TimeoutError. Запит не вклався в тайм-аут. Повторіть його або збільште межу.
- ServerDisconnectedError. З'єднання обірвалося. Зазвичай допомагає повтор і менша паралельність.
Коди 403 і 429 надходять від сайту — що з ними робити, описано на сторінці помилки 429.
Один IP для групи запитів
Кожен запит на порту 823 іде з нового IP. Якщо кілька запитів мають іти з однієї адреси — вхід, потім сторінки акаунта — використовуйте для них фіксований порт і окрему сесію: так cookie та IP залишаться узгодженими.
Питання й відповіді
Чи бере aiohttp проксі зі змінних середовища?
Лише якщо створити сесію з параметром <code>trust_env=True</code> — тоді він прочитає HTTP_PROXY і HTTPS_PROXY. Надійніше передавати проксі явно, як у прикладі.
Скільки одночасних запитів можна запускати?
План дозволяє до 1000 одночасних з'єднань. Обмежуйте паралельність у коді (наприклад, семафором), щоб не перевищити ліміт і не перевантажити цільовий сайт.
Чи можна задати проксі один раз для всієї сесії?
В актуальних версіях aiohttp параметр <code>proxy</code> приймає і сама сесія. У старих версіях його потрібно передавати в кожен запит.
Як закодувати спецсимволи в паролі?
Пропустіть логін і пароль через <code>urllib.parse.quote(..., safe="")</code> або передайте їх окремо через <code>proxy_auth=aiohttp.BasicAuth(...)</code>.