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