Jika session.proxies menunjuk satu titik akhir tetapi skrip menggunakan proksi shell, menetapkan semula kamus yang sama tidak menyelesaikan konflik. Requests boleh menggabungkan tetapan proksi persekitaran dengan keutamaan mengatasi lalai Session. Pilih sama ada Session patut terus menemui tetapan daripada persekitaran.

Kekalkan penemuan persekitaran, berikan laluan dalam permintaan

Hantar nilai jelas kepada setiap panggilan, seperti saranan Requests untuk mengelakkan konflik Session dengan persekitaran ini:

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()

Gantikan pendengar setempat dengan milik anda. Jika membandingkan titik akhir HTTP awam, pilih calon daripada senarai proksi HTTP sambil mengekalkan dasar Session. Ini mengawal entri pemetaan yang diberikan; buat pilihan yang disengajakan juga untuk skim atau hos lain yang digunakan aplikasi. Perkhidmatan, IDE, bekas atau pelaksana CI boleh mewarisi persekitaran berbeza daripada terminal.

Biarkan Session mengawal tetapannya sendiri

Jika aplikasi tidak patut menemui proksi daripada persekitaran, tetapkan dasar sebelum permintaan pertama:

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 turut mempengaruhi konfigurasi sijil berkaitan persekitaran dan pengesahan netrc automatik. Ambil kira kebergantungan itu sebelum memilihnya. Untuk himpunan CA peribadi yang diluluskan, anda boleh memberikan laluan jelas:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Gunakan himpunan yang benar-benar diluluskan dan biarkan pengesahan aktif. Kekalkan Session berasingan untuk setiap dasar penghalaan, bukannya mengubah satu ketika kerja lain menggunakannya.

Jika kedua-dua pilihan tidak menerangkan laluan aplikasi, bandingkan Session terasing dengan aplikasi menggunakan persekitaran masa jalan dan destinasi tidak berbahaya yang sama. Catat pemboleh ubah proksi yang hadir, nilai trust_env dan sama ada panggilan memberikan proxies; kecualikan URL yang mengandungi kelayakan daripada log bersama. Kejayaan terasing mengarahkan pemeriksaan seterusnya kepada pembinaan Session, penyesuai, aliran permintaan tersedia atau pengangkutan tersuai. Ujian persekitaran curl tidak menentukan kelakuan penggabungan Requests sendiri.

Artikel berkaitan