Bagaimana untuk melumpuhkan Pengesahan Sijil dalam Permintaan Python?

Mary-Kate Olsen
Lepaskan: 2024-10-26 15:38:03
asal
761 orang telah melayarinya

How to Disable Certificate Verification in Python Requests?

Lumpuhkan Pengesahan Sijil dalam Permintaan Python

Apabila menghadapi ralat sijil tamat tempoh semasa membuat permintaan HTTPS dengan permintaan, penyelesaian biasa adalah untuk melumpuhkan semakan sijil keselamatan.

Penyelesaian 1: Menggunakan verify=False

Seperti yang dinyatakan dalam dokumentasi, anda boleh lulus verify=False untuk melumpuhkan pengesahan sijil.

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

Penyelesaian 2: Permintaan Tampalan Monyet (Pengurus Konteks)

Untuk penggunaan yang lebih lanjut, anda boleh menggunakan pengurus konteks untuk meminta tampalan monyet dan melumpuhkan pengesahan sijil untuk semua permintaan dalam konteksnya.

<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

Penggunaan:

<code class="python">with no_ssl_verification():
    requests.get('https://wrong.host.badssl.example/')</code>
Salin selepas log masuk

Perhatikan bahawa pengurus konteks ini menutup semua penyesuai terbuka selepas meninggalkannya untuk mengelakkan tingkah laku yang tidak dijangka disebabkan oleh sambungan cache.

Atas ialah kandungan terperinci Bagaimana untuk melumpuhkan Pengesahan Sijil 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!