Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh melumpuhkan pengesahan sijil SSL dalam permintaan Python?

Bagaimanakah saya boleh melumpuhkan pengesahan sijil SSL dalam permintaan Python?

DDD
DDDasal
2024-10-27 06:04:29392semak imbas

How can I disable SSL certificate verification in Python requests?

Lumpuhkan Pengesahan Sijil Keselamatan dalam Permintaan Python

Apabila membuat permintaan HTTPS, perpustakaan permintaan Python mengesahkan sijil SSL pelayan untuk memastikan sambungan selamat . Walau bagaimanapun, dalam beberapa kes, seperti semasa mengakses tapak web dengan sijil tamat tempoh, anda mungkin ingin melumpuhkan pengesahan ini.

Untuk melumpuhkan pengesahan sijil, gunakan argumen pengesahan dalam fungsi requests.post. Tetapkannya kepada Palsu seperti berikut:

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

Ini membolehkan permintaan dibuat tanpa mengesahkan sijil SSL. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini boleh menimbulkan risiko keselamatan, kerana ia membuka kemungkinan serangan man-in-the-middle. Gunakan pilihan ini dengan berhati-hati.

Menggunakan Pengurus Konteks untuk Pengesahan SSL

Jika anda perlu melumpuhkan pengesahan SSL untuk berbilang permintaan dalam konteks tertentu, anda boleh menggunakan pengurus konteks seperti berikut:

<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):
        # ...

    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

with no_ssl_verification():
    # Make requests without SSL verification here</code>

Pengurus konteks ini menetapkan pengesahan sementara kepada Palsu untuk semua permintaan yang dibuat dalam blok, kemudian kembali kepada tingkah laku lalai apabila blok itu keluar. Ia juga menyekat amaran SSL yang sebaliknya akan dicetuskan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melumpuhkan pengesahan sijil SSL dalam permintaan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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