Для одного асинхронного запиту через HTTP-проксі без автентифікації задайте маршрут на session.get(). За потреби додайте aiohttp до проєкту:

uv add aiohttp

Замініть документаційну адресу нижче своїм HTTP-слухачем або кандидатом зі списку HTTP-проксі. Він має дозволяти CONNECT до HTTPS-цілі; точці лише з SOCKS потрібен відповідний конектор замість цього аргументу proxy.

import asyncio
import aiohttp

async def main():
    timeout = aiohttp.ClientTimeout(total=15, connect=5)
    async with aiohttp.ClientSession(
        timeout=timeout,
        trust_env=False,
    ) as session:
        async with session.get(
            "https://example.com/",
            proxy="http://203.0.113.10:8080",
        ) as response:
            print(response.status)
            print((await response.text())[:200])

asyncio.run(main())

Запит виводить статус HTTP і перші 200 символів тексту відповіді. Відповідь 403 або 429 тут залишається доступною для перевірки; викличте response.raise_for_status(), якщо застосунок має перетворювати невдалі статуси на винятки. Асинхронні менеджери контексту закривають сесію й відповідь після завершення блоків, зокрема за винятку.

15-секундний бюджет total охоплює операцію запиту. 5-секундний бюджет connect включає очікування доступного з’єднання з пулу, тож зайнятий пул може вичерпати його до відкриття нового сокета. Це важливо під час перетворення одиночного виклику на одночасні перевірки.

trust_env=False зберігає показаний маршрут явним. aiohttp типово не виявляє змінні оточення проксі; експорт такої змінної в іншому терміналі не налаштує цей виклик. Вибирайте trust_env=True лише тоді, коли успадковане оточення процесу — потрібна політика маршрутизації.

Схожі статті