requests连接https的问题

本文解决了Python中使用requests库时遇到的SSLError和证书校验错误,包括sslv3alerthandshakefailure与[SSL:CERTIFICATE_VERIFY_FAILED]错误。通过调整默认的SSL配置和设置verify参数为False,可以有效解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sslv3 alert handshake failure错误,参考https://stackoverflow.com/questions/31730819/python-sslerror-using-requests-for-surveymonkey-com

requests.exceptions.SSLError: HTTPSConnectionPool(host='125.71.214.6', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:661)'),))

头里面添加如下代码即可(linux上问题解决)
import requests.packages.urllib3.util.ssl_ requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL'


证书校验错误
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)


网站不是官方的公钥,如下,添加verify参数为False问题即解决
response = requests.get(url, params=data, headers=security_headers, timeout=2, verify=False)
 

转载于:https://www.cnblogs.com/inns/p/7810967.html

### 关于 Python `requests` 库中的 404 错误 当使用 Python 的 `requests` 库访问某个 URL 并收到 HTTP 状态码 404 时,这通常表示客户端尝试访问的资源在服务器上不存在。以下是可能的原因以及解决方案: #### 1. **URL 地址拼写错误** 如果输入的 URL 存在拼写错误或者路径不正确,则可能导致返回 404 错误。建议仔细检查并确认 URL 是否有效。 ```python import requests url = "https://www.example.com/nonexistent-page" try: response = requests.get(url) response.raise_for_status() # 自动抛出异常如果状态码不是2xx except requests.exceptions.HTTPError as e: print(f"HTTP error occurred: {e}") # 输出具体的错误信息 ``` 上述代码通过捕获 `requests.exceptions.HTTPError` 异常来处理非成功的响应状态码[^1]。 #### 2. **未提供必要的请求头** 某些网站会对请求头进行验证,特别是对于缺少合法的 `User-Agent` 字段的情况可能会拒绝服务并返回 404 或其他错误状态码。可以通过自定义请求头解决此问题。 ```python headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36' } response = requests.get('https://example.com', headers=headers) if response.status_code != 200: print("Request failed with status code:", response.status_code) ``` #### 3. **HTTPS 验证失败引发重定向至错误页面** 对于 HTTPS 请求,默认情况下 `requests` 会验证 SSL/TLS 证书的有效性。如果目标站点存在证书问题(如过期或不可信),则可能导致意外行为甚至跳转到错误页从而触发 404 错误。可以禁用 SSL 验证以绕过这一限制,但这并不推荐用于生产环境因为可能存在安全隐患。 ```python response = requests.get('https://insecure-site-with-bad-cert/', verify=False) ``` 此外,在某些版本下关闭警告消息可提升用户体验[^2]: ```python from urllib3.exceptions import InsecureRequestWarning from urllib3 import disable_warnings disable_warnings(InsecureRequestWarning) ``` #### 4. **动态加载的内容无法直接获取** 若网页依赖 JavaScript 动态渲染数据而非静态 HTML 文件呈现给用户浏览的话,单纯依靠 `requests` 是不足以抓取这些内容的。此时需考虑采用 Selenium WebDriver 或 Playwright 这样的工具模拟真实浏览器操作流程才能成功采集所需资料。 综上所述,针对不同场景采取相应措施能够有效地应对由各种原因引起的 404 错误现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值