Використовуйте proxy=, коли одна кінцева точка має обслуговувати запити клієнта. Використовуйте mounts=, коли схемам цільових URL потрібні різні маршрути. Приклади використовують ці інтерфейси HTTPX; проєкту зі старим API proxies= потрібне налаштування під його версію.

Одна кінцева точка

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Замініть локальну адресу прослуховування робочим HTTP-проксі. Кандидата зі списку HTTP-проксі однаково слід перевірити з вашою ціллю. HTTPS-ціль може використовувати цю точку http:// через CONNECT. Зміна схеми на https:// натомість просить TLS до самого проксі, що мають підтримувати і клієнт, і проксі.

Окремі маршрути за схемою цілі

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Ключі mounts зіставляються з цільовими URL. HTTP-цілі тут вибирають порт 8080, HTTPS-цілі — 8081. Значення proxy описує протокол, за яким проксі приймає з’єднання, тому mount для HTTPS може правильно містити проксі http://. Підставте власні точки й перевірте обидві схеми цілей.

Обидва варіанти задають trust_env=False на клієнті та, де їх передано, на транспортах. Інакше HTTPX типово читає змінні середовища проксі й сертифікатів. Якщо розгортання від них залежить, залиште виявлення ввімкненим або явно задайте потрібні маршрути та довіру. Для приватної довіри використовуйте TLS-контекст і CA-налаштування своєї версії HTTPX; перевірку цілі не вимикайте. Довіра до HTTPS-проксі може бути окремою від довіри до цілі.

httpx.Timeout(15.0, connect=5.0) перевизначає тайм-аут підключення і надає іншим налаштованим складникам типове значення. Читання, запис і очікування пулу мають окремі межі; п’ятнадцять секунд — не загальна межа фактичної тривалості. Тайм-аут пулу може означати, що інша робота утримує доступні з’єднання. Правильно закривайте клієнти й потокові відповіді, перш ніж вважати це доказом недосяжності проксі.

Схожі статті