Python requests 处理 HTTPS SSL 证书错误的两种方法
本文介绍在使用 Python requests 库请求 HTTPS 网站时遇到的 SSL 证书错误(SSLerror)的两种常见解决方案。第一种方法是通过将 verify 参数设置为 False 来关闭 SSL 证书验证,适用于开发测试或受控环境;第二种方法是将本地证书文件路径赋值给 verify 参数,以指定具体的 CA 证书进行验证。文章提供了基于 requests.get 和 requests.post 的代码示例,帮助开发者快速解决证书验证问题。
Python requests SSL 证书错误概述
在使用 Python 的 requests 库发起 HTTPS 请求时,偶尔会遭遇证书验证失败的问题,即常见的 SSLerror。面对此类报错,无需惊慌,通常有明确的解决路径。
由于难以直接构造一个必然触发 SSL 证书错误的目标网站,此处通过模拟请求一个 HTTPS 地址并故意触发 SSLerror 来演示处理流程,随后给出相应的解决方法。
方法一:关闭 SSL 证书验证
解决该问题的一种直接方式是关闭 SSL 证书的验证检查。
import requests
'''
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
:param verify: (optional) Either a boolean, in which case it controls whether we verify
the server's TLS certificate, or a string, in which case it must be a path
to a CA bundle to use. Defaults to ``True``.
'''
r = requests.get('https://kyfw.12306.cn',verify=False)
print(r.text)
具体操作是在请求函数中修改 verify 参数的值。由于 requests 库中的 get 和 post 方法底层均调用 request() 函数,因此该参数对这两种请求方式均适用。只需将 verify 设置为 True(默认)或 False 即可控制验证行为。
方法二:指定证书文件路径
若关闭验证能解决问题,则可直接采用此方案;若无效,可尝试以下另一种方法。
import requests
'''
:param verify: (optional) Either a boolean, in which case it controls whether we verify
the server's TLS certificate, or a string, in which case it must be a path
to a CA bundle to use. Defaults to ``True``.
'''
## 证书路径
cert = '../cert/test.pem'
r = requests.get('https://kyfw.12306.cn',verify=cert)
print(r.text)
另一种有效的方法是将本地证书文件的路径直接赋值给 verify 参数,随后发起请求即可完成验证。
以上即为解决 Python requests SSL 证书问题的主要内容,希望能为读者提供有效帮助,欢迎继续支持本站获取更多技术资讯。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













