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>
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>
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!