requests https 错误

本文探讨了在使用requests库进行HTTPS请求时遇到的SSL验证错误,并提供了两种解决方案:一是进行SSL验证,二是通过设置verify参数为False来忽略SSL验证,以确保请求能够成功。

HTTPS请求进行SSL验证或忽略SSL验证才能请求成功,忽略方式为  verify=False

posted on 2019-04-09 10:37  吃瓜的瓜农 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/guanong/p/10675438.html

`requests` 是 Python 中一个非常流行的 HTTP 请求库,支持多种协议和功能,包括 HTTPS。通过 `requests` 库,我们可以轻松地发送 HTTPS 请求,并处理响应数据。 --- ### 1. **使用 `requests` 发送 HTTPS 请求** #### 示例 1: 发送简单的 HTTPS GET 请求 ```python import requests response = requests.get("https://www.example.com") print(response.status_code) # 输出状态码 print(response.text) # 输出响应内容 ``` **解释**: - `requests.get()` 方法用于发送一个 GET 请求。 - `response.status_code` 返回 HTTP 状态码(例如 200 表示成功)。 - `response.text` 返回响应的文本内容。 --- #### 示例 2: 带参数的 HTTPS POST 请求 ```python import requests url = "https://httpbin.org/post" data = {"key": "value"} response = requests.post(url, data=data) print(response.json()) # 输出 JSON 格式的响应 ``` **解释**: - `requests.post()` 方法用于发送一个 POST 请求。 - `data` 参数指定要发送的数据。 - `response.json()` 将响应内容解析为 JSON 格式。 --- #### 示例 3: 使用自定义证书验证 HTTPS 请求 默认情况下,`requests` 会自动验证 HTTPS 请求的 SSL 证书。如果需要使用自定义证书,可以这样做: ```python import requests response = requests.get("https://www.example.com", verify="/path/to/certificate.pem") print(response.status_code) ``` **解释**: - `verify` 参数用于指定 SSL 证书的路径。如果设置为 `False`,则会禁用 SSL 验证(不推荐在生产环境中使用)。 --- #### 示例 4: 处理 HTTPS 请求中的异常 ```python import requests try: response = requests.get("https://www.example.com", timeout=5) # 设置超时时间为5秒 response.raise_for_status() # 如果响应状态码不是200,抛出异常 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") else: print(response.text) ``` **解释**: - `timeout` 参数用于设置请求的超时时间。 - `raise_for_status()` 方法会在响应状态码表示错误时抛出异常。 - `requests.exceptions.RequestException` 是所有 `requests` 异常的基类。 --- ### 2. **问题产生的原因** HTTPS 是一种安全的通信协议,基于 HTTP 和 TLS/SSL 加密技术。`requests` 库内置了对 HTTPS 的支持,但有时可能会遇到以下问题: - **SSL 验证失败**: 如果服务器的 SSL 证书无效或过期,`requests` 会抛出 `SSLError`。 - **超时问题**: 如果网络连接不稳定或目标服务器响应缓慢,可能会导致请求超时。 - **代理问题**: 在某些网络环境下,可能需要配置代理才能正常访问外部资源。 --- ### 3. **解决方法** #### 解决 SSL 验证失败的问题 ```python import requests # 忽略 SSL 验证(不推荐) response = requests.get("https://www.example.com", verify=False) # 或者使用自定义证书 response = requests.get("https://www.example.com", verify="/path/to/certificate.pem") ``` **注意**: 忽略 SSL 验证 (`verify=False`) 会降低安全性,仅应在测试环境中使用。 --- #### 解决超时问题 ```python import requests try: response = requests.get("https://www.example.com", timeout=10) # 设置超时时间为10秒 except requests.exceptions.Timeout: print("请求超时,请检查网络连接或增加超时时间。") ``` --- ### 4. **相关注意事项** - **保持最新版本**: 确保 `requests` 库是最新版本,以获得更好的安全性和功能支持。 - **避免硬编码敏感信息**: 如果需要传递用户名、密码等敏感信息,应避免将其硬编码到代码中。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值