在 Python 请求中禁用安全证书验证
发出 HTTPS 请求时,Python 的 requests 库会验证服务器的 SSL 证书以确保连接安全。但是,在某些情况下,例如访问证书过期的网站时,您可能希望禁用此验证。
要禁用证书验证,请在 requests.post 函数中使用 verify 参数。将其设置为 False,如下所示:
<code class="python">import requests requests.post(url='https://foo.example', data={'bar':'baz'}, verify=False)</code>
这允许在不验证 SSL 证书的情况下发出请求。然而,值得注意的是,这可能会带来安全风险,因为它可能导致中间人攻击。请谨慎使用此选项。
使用上下文管理器进行 SSL 验证
如果您需要对特定上下文中的多个请求禁用 SSL 验证,您可以使用上下文管理器如下:
<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>
此上下文管理器暂时将块内发出的所有请求的 verify 设置为 False,然后在块退出时恢复为默认行为。它还会抑制否则会触发的 SSL 警告。
以上是如何在 Python 请求中禁用 SSL 证书验证?的详细内容。更多信息请关注PHP中文网其他相关文章!