Bagaimana untuk Melumpuhkan Pengesahan Sijil Keselamatan dalam Permintaan Python?

Barbara Streisand
Lepaskan: 2024-10-29 00:15:30
asal
782 orang telah melayarinya

How to Disable Security Certificate Verification in Python Requests?

Melumpuhkan Pengesahan Sijil Keselamatan dalam Permintaan Python

Apabila berinteraksi dengan titik akhir HTTPS menggunakan perpustakaan permintaan Python, anda mungkin menghadapi ralat yang berkaitan dengan SSL yang tidak sah sijil. Untuk mengurangkan isu ini, anda boleh melumpuhkan pengesahan sijil dalam permintaan.

Menurut dokumentasi rasmi, anda boleh mencapai ini dengan menetapkan parameter pengesahan kepada Palsu. Ini mengarahkan permintaan untuk memintas pengesahan sijil.

<code class="python">import requests

requests.post(url='https://foo.example', data={'bar': 'baz'}, verify=False)</code>
Salin selepas log masuk

Sebagai alternatif, untuk modul pihak ketiga yang mungkin mengendalikan pengesahan SSL, anda boleh menggunakan pengurus konteks untuk menyekat amaran dan melumpuhkan pengesahan. Ini melibatkan menggantikan permintaan.Kaedah Session.merge_environment_settings dengan versi tersuai yang menetapkan pengesahan kepada False secara lalai.

<code class="python">import warnings
import contextlib

import requests
from urllib3.exceptions import InsecureRequestWarning

old_merge_environment_settings = requests.Session.merge_environment_settings

@contextlib.contextmanager
def no_ssl_verification():
    opened_adapters = set()

    def merge_environment_settings(self, url, proxies, stream, verify, cert):
        opened_adapters.add(self.get_adapter(url))

        settings = old_merge_environment_settings(self, url, proxies, stream, verify, cert)
        settings['verify'] = False

        return settings

    requests.Session.merge_environment_settings = merge_environment_settings

    try:
        with warnings.catch_warnings():
            warnings.simplefilter('ignore', InsecureRequestWarning)
            yield
    finally:
        requests.Session.merge_environment_settings = old_merge_environment_settings

        for adapter in opened_adapters:
            try:
                adapter.close()
            except:
                pass</code>
Salin selepas log masuk

Anda boleh menggunakan pengurus konteks ini seperti berikut:

<code class="python">with no_ssl_verification():
    requests.get('https://wrong.host.badssl.example/')
    print('It works')

requests.get('https://wrong.host.badssl.example/', verify=False)
print('It resets back')</code>
Salin selepas log masuk

Ia penting untuk ambil perhatian bahawa penyelesaian ini memberi kesan kepada semua permintaan yang dibuat semasa skop pengurus konteks. Oleh itu, melainkan dinyatakan dengan jelas, permintaan seterusnya juga akan memintas pengesahan sijil.

Atas ialah kandungan terperinci Bagaimana untuk Melumpuhkan Pengesahan Sijil Keselamatan dalam Permintaan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!