Home > Backend Development > Python Tutorial > How can I disable SSL certificate verification in Python requests?

How can I disable SSL certificate verification in Python requests?

DDD
Release: 2024-10-27 06:04:29
Original
481 people have browsed it

How can I disable SSL certificate verification in Python requests?

Disable Security Certificate Verification in Python Requests

When making HTTPS requests, Python's requests library verifies the server's SSL certificate to ensure the connection is secure. However, in some cases, such as when accessing websites with expired certificates, you may wish to disable this verification.

To disable certificate verification, use the verify argument in the requests.post function. Set it to False as follows:

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

This allows the request to be made without verifying the SSL certificate. However, it is important to note that this can pose a security risk, as it opens the possibility of man-in-the-middle attacks. Use this option with caution.

Using a Context Manager for SSL Verification

If you need to disable SSL verification for multiple requests within a specific context, you can use a context manager as follows:

<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>
Copy after login

This context manager temporarily sets verify to False for all requests made within the block, then reverts to the default behavior when the block exits. It also suppresses the SSL warning that would otherwise be triggered.

The above is the detailed content of How can I disable SSL certificate verification in Python requests?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template