សំណើអាចដំណើរការតាម session.get() ហើយបរាជ័យក្នុងការផ្ទៀងផ្ទាត់វិញ្ញាបនបត្រ ក្រោយសរសេរឡើងវិញជា PreparedRequest។ ផ្លូវ send កម្រិតទាបមិនធ្វើការបញ្ចូលបរិស្ថានដូចវិធី request ធម្មតាទេ។

import requests

with requests.Session() as session:
    request = requests.Request("GET", "https://example.com/")
    prepared = session.prepare_request(request)

    settings = session.merge_environment_settings(
        prepared.url, {}, None, None, None
    )
    response = session.send(
        prepared,
        timeout=(5, 15),
        **settings,
    )
    response.raise_for_status()
    print(response.status_code)

បញ្ចូលដោយប្រើ URL ដែលរៀបចំចុងក្រោយ ក្រោយការប្ដូរ URL ដែលចង់បាន។ សេចក្ដីសម្រេចប្រូកស៊ី និងការរំលងអាស្រ័យលើគោលដៅ ដូច្នេះការកំណត់ពី URL មុនអាចខុសសម្រាប់សំណើដែលផ្ញើពិត។

ការកំណត់ CA ងាយនឹងរំលង

ពេលការជឿទុកចិត្តបរិស្ថានធម្មតាបើក ហើយការផ្ទៀងផ្ទាត់មិនត្រូវជាន់លើច្បាស់លាស់ ការបញ្ចូលពិចារណា REQUESTS_CA_BUNDLE និងជម្រើសបម្រុង CURL_CA_BUNDLE។ ការហៅ send ផ្ទាល់ដោយ verify ដើមមិនស្វែងរក CA នោះទេ។ បិទការផ្ទៀងផ្ទាត់លាក់ភាពខុសគ្នា ជំនួសផ្ដល់ឃ្លាំងវិញ្ញាបនបត្រដែលចង់បាន។

Session.prepare_request() ក៏អនុវត្តឥរិយាបថរៀបចំរបស់សម័យ។ បង្កើតសំណើផ្ទាល់ដោយ Request.prepare() ជាជម្រើសដោយឡែក។ កុំរំពឹងថាវាដាក់ខូគីសម័យ ឬការរៀបចំសម័យផ្សេងដោយស្វ័យប្រវត្តិ។

ប្រូកស៊ីមានច្បាប់ជាក់លាក់ជាង

និយាយថារាល់ PreparedRequest មិនអើពើអថេរបរិស្ថានប្រូកស៊ីគឺមិនត្រឹមត្រូវ។ ក្នុង Requests 2.34.2 send កំណត់ប្រូកស៊ីដើមពេលគ្មានអាគុយម៉ង់ឈ្មោះ proxies។ ផ្ដល់ proxies={} ទៅ send រំលងសាខាកំណត់ដើមជាក់លាក់នោះ។

វចនានុក្រមទទេដែលផ្ដល់ទៅ merge_environment_settings មានតួនាទីផ្សេង៖ ការបញ្ចូលអាចបំពេញវាដោយផ្លូវបរិស្ថានដែលអនុវត្ត មុនបញ្ជូនទៅ send។ មើលតែវចនានុក្រមទទេក្នុងកូដពីរនាំឱ្យខកខានវិធីខុសគ្នាដែលទទួលវា។

ក្នុងកូដបង្កើតសំណើពិសេស រក្សាការរៀបចំ ការបញ្ចូលបរិស្ថាន និងការផ្ញើជាមួយគ្នា។ ពេលកម្មវិធីប្រើ trust_env=False ដោយចេតនា ការបញ្ចូលគោរពគោលការណ៍នោះ។ វាមិនបង្ខំការកំណត់បរិស្ថានទៅកម្មវិធីអតិថិជនដែលបិទវាដោយចេតនាទេ។

អត្ថបទពាក់ព័ន្ធ