Назначьте выбранному хосту прокси-транспорт, а остальной части клиента явно задайте прямой транспорт:

import httpx

direct = httpx.HTTPTransport(trust_env=False)
proxied = httpx.HTTPTransport(
    proxy="http://203.0.113.10:8080",
    trust_env=False,
)

with httpx.Client(
    transport=direct,
    mounts={"all://example.com": proxied},
    trust_env=False,
    timeout=15,
) as client:
    response = client.get("https://example.com/")
    print(response.status_code)

    other = client.get("https://example.org/")
    print(other.status_code)

Замените адрес для документации нужной HTTP-точкой своего сервиса или из списка HTTP-прокси. Здесь example.com использует монтирование, а example.org — прямой вариант по умолчанию. Важны оба вызова: успех только на проксируемом хосте не проверяет резервный маршрут.

Условие сопоставленияРезультат
all://example.comТочный хост для всех схем назначения.
ПоддоменОтдельный выбор; намеренно используйте поддерживаемый шаблон, если он тоже должен совпадать.
ПутьМонтирования выбирают шаблоны схемы, хоста и необязательного порта, а не URL-пути.
Перенаправление на другой хостЕсли следование перенаправлениям включено, сопоставляется новый URL, который может использовать прямой резервный маршрут.

В примере отключено чтение окружения у клиента и обоих транспортов. Другое широкое правило прокси или совпадающее монтирование может изменить результат при адаптации. Если развёртывание зависит от CA-настроек окружения, задайте это доверие явно или сохраните подходящую политику чтения, чтобы не потерять его незаметно.

Менять прокси для всей машины не нужно. В проверках маршрута сохраняйте и нужный проксируемый хост, и специально выбранный резервный хост.

Похожие статьи