Използвайте proxy=, когато една крайна точка трябва да обслужва заявките на клиента. Използвайте mounts=, когато схемите на целта изискват различни маршрути. Примерите използват тези 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)

Ключовете за монтиране съвпадат с целевите URL адреси. HTTP целите тук избират порт 8080, а HTTPS целите — 8081. Стойността на проксито описва собствения протокол на слушателя, затова HTTPS монтирането може правилно да съдържа прокси http://. Подменете крайните точки и проверете и двете схеми на целта.

И двата варианта задават trust_env=False на клиента и, където са предоставени, на транспортите. Иначе HTTPX по подразбиране чете променливите на средата за прокси и сертификати. Ако внедряването зависи от тях, оставете откриването включено или задайте изрично нужните маршрути и доверие. За частно доверие използвайте TLS контекст и CA конфигурация, поддържани от вашата HTTPX версия; оставете проверката на целта активна. Доверието към HTTPS проксито може да е отделно от това към целта.

httpx.Timeout(15.0, connect=5.0) заменя настройката за времето на изчакване при свързване и дава стойността по подразбиране на останалите конфигурирани компоненти. Четене, запис и чакане за пула имат отделни граници; петнадесет секунди не са общ краен срок за реалното изминало време. Изтичане на времето за пула може да означава, че друга работа задържа наличните връзки. Затваряйте правилно клиенти и поточни отговори, преди да го приемате за доказателство за недостъпно прокси.

Подобни статии