Проксији Session-а у Python Requests и предност окружења
Учините рутирање Python Requests предвидљивим при раду session.proxies, променљивих окружења, поставки захтева и trust_env.
Ако session.proxies показује на једну крајњу тачку, а скрипта користи прокси љуске, поновно додељивање истог речника неће решити сукоб. Requests може спојити поставке проксија из окружења са предношћу над подразумеваним вредностима Session-а. Одаберите треба ли Session да настави да открива поставке из окружења.
Задржите откривање окружења, наведите руте у захтеву
Проследите изричите вредности појединачном позиву, како Requests препоручује за избегавање овог сукоба Session-а и окружења:
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
with requests.Session() as session:
response = session.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
Локални ослушкивач замените својим. Ако поредите јавне HTTP тачке, бирајте кандидате са листе HTTP проксија уз непромењену политику Session-а. Тиме управљате прослеђеним ставкама мапирања; свесно одлучите и за друге шеме или хостове апликације. Сервис, IDE, контејнер или CI извршилац може наследити другачије окружење од терминала.
Нека Session управља својим поставкама
Ако апликација не треба да открива проксије из окружења, поставите политику пре првог захтева:
with requests.Session() as session:
session.trust_env = False
session.proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = session.get(
"https://example.com/",
timeout=(5, 15),
)
response.raise_for_status()
trust_env=False утиче и на конфигурацију сертификата повезану са окружењем те аутоматску netrc аутентификацију. Узмите те зависности у обзир пре избора. За одобрен приватни пакет CA сертификата можете навести изричиту путању:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Користите стварно одобрен пакет и оставите проверу укључену. За сваку политику рутирања задржите засебан Session уместо мењања једног док га други послови користе.
Ако ниједна могућност не објашњава руту апликације, упоредите изоловани Session са апликацијом у истом извршном окружењу и са истим безопасним одредиштем. Забележите присутне прокси променљиве, вредност trust_env и прослеђује ли позив proxies; URL-ове са приступним подацима изоставите из дељених дневника. Изоловани успех усмерава следећу проверу на прављење Session-а, адаптере, токове припремљених захтева или сопствене транспорте. Тест окружења curl-ом не одређује сопствено понашање спајања Requests-а.