Калі 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 накіроўвае наступную праверку на стварэнне Session, адаптары, патокі падрыхтаваных запытаў ці ўласныя транспарты. Праверка асяроддзя праз curl не вызначае ўласныя паводзіны аб’яднання Requests.

Падобныя артыкулы