python使用requests发送请求ssl错误

在使用 requests 库发送 HTTP 请求时,如果服务器使用了 SSL/TLS 证书,而这些证书存在问题(例如过期、自签名、域名不匹配等),requests 默认会抛出 requests.exceptions.SSLError 异常。为了捕获和处理这些 SSL 错误,你可以使用 try-except 块来捕获 SSLError 异常,并相应地处理它。

下面是一个示例代码,展示了如何捕获并处理 SSL 错误:

python 复制代码
import requests
from requests.exceptions import SSLError

url = 'https://example.com'  # 替换为实际的 URL

try:
    response = requests.get(url)
    response.raise_for_status()  # 如果响应状态码不是200,抛出HTTPError异常
    print(response.text)
except SSLError as e:
    print(f"SSL error occurred: {e}")
    # 你可以在这里添加更多的错误处理逻辑,例如忽略 SSL 错误(不推荐用于生产环境)
    # 如果你确实需要忽略 SSL 错误(例如,在测试环境中),可以使用以下代码:
    # import ssl
    # requests.get(url, verify=False)  # 不验证 SSL 证书
    # 注意:不验证 SSL 证书会使你的请求容易受到中间人攻击,因此仅建议在受信任的环境中使用
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

注意事项

  1. 不验证 SSL 证书

    • 使用 verify=False 参数可以使 requests 不验证 SSL 证书,但这会使你的请求容易受到中间人攻击。因此,这种方法仅推荐在受信任的环境中使用,例如本地开发或测试环境。
    • 例如:response = requests.get(url, verify=False)
  2. 自定义 SSL 证书

    • 如果你有特定的 SSL 证书需要验证,可以将证书文件路径传递给 verify 参数。
    • 例如:response = requests.get(url, verify='/path/to/certfile')
  3. 捕获其他请求异常

    • 除了 SSLErrorrequests 还会抛出其他类型的异常,例如 requests.exceptions.HTTPError(表示 HTTP 错误,如 4xx 或 5xx 响应),requests.exceptions.ConnectionError(表示网络问题),requests.exceptions.Timeout(表示请求超时),等等。
    • 在上面的示例中,我们使用 requests.exceptions.RequestException 捕获所有 requests 库抛出的异常,这包括 SSLError 和其他所有异常。

通过捕获和处理 SSL 错误,你可以确保你的程序在面对证书问题时能够优雅地处理,而不是直接崩溃。

相关推荐
java干货17 分钟前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
_F_y17 分钟前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
机器懒得学习18 分钟前
智能股票分析系统
python·深度学习·金融
毕设源码-郭学长18 分钟前
【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案
开发语言·python·数据分析
SR_shuiyunjian22 分钟前
Python第三次作业
python
vx_biyesheji000123 分钟前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
无小道41 分钟前
Qt——常用控件
开发语言·qt
鸽芷咕1 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
爱学习的阿磊1 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
aini_lovee1 小时前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab