URLError: <urlopen error [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129)>
时间: 2024-03-04 09:51:15 浏览: 21
这个错误通常是因为SSL/TLS协议版本不一致导致的,可以尝试设置SSL/TLS协议版本来解决这个问题。你可以使用以下代码:
```python
import ssl
import urllib.request
# 设置ssl协议版本
ssl._create_default_https_context = ssl._create_unverified_context
# 设置请求头部信息,伪装成浏览器访问网站
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 目标网页URL
target_url = 'https://www.doupoxs.com/doupocangqiong/'
# 模拟浏览器访问获取网页HTML代码
req = urllib.request.Request(url=target_url, headers=headers)
res = urllib.request.urlopen(req)
html = res.read().decode('utf-8')
print(html)
```
在这个代码中,我们使用了`ssl._create_unverified_context()`方法使SSL/TLS协议版本保持一致,从而避免了SSLV3_ALERT_HANDSHAKE_FAILURE错误。
相关问题
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
当出现`urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>`错误时,可以尝试以下解决方法:
1. 重新安装证书:
```shell
pip install --upgrade certifi
```
这将更新`certifi`库,该库包含了可信任的证书列表。重新安装证书可能会解决证书验证失败的问题。
2. 检查系统时间和日期:
证书验证失败可能是由于系统时间和日期不正确导致的。请确保您的系统时间和日期设置正确。
3. 禁用证书验证:
如果您在开发环境中遇到此错误,可以考虑禁用证书验证。请注意,这只适用于开发环境,不建议在生产环境中禁用证书验证。
```python
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
```
这将创建一个未经验证的SSL上下文,从而绕过证书验证。
4. 检查网络连接:
确保您的网络连接正常,没有任何防火墙或代理服务器阻止了与目标服务器的连接。
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate 是一个常见的错误,通常在使用Python的urllib库进行HTTPS请求时出现。
这个错误是由于SSL证书验证失败导致的。当你使用urllib库发送HTTPS请求时,它会尝试验证服务器返回的SSL证书是否有效和可信任。如果验证失败,就会抛出这个错误。
解决这个问题的方法有两种:
1. 忽略证书验证:可以通过设置`verify=False`来忽略证书验证,但这并不安全,不推荐在生产环境中使用。示例代码如下:
```python
import urllib.request
url = "https://example.com"
response = urllib.request.urlopen(url, verify=False)
```
2. 添加缺失的根证书:可以通过将缺失的根证书添加到Python的证书存储中来解决。具体步骤如下:
- 下载缺失的根证书文件(.pem或.crt格式)。
- 找到Python的证书存储位置。可以通过运行以下代码来查找:
```python
import ssl
print(ssl.get_default_verify_paths())
```
- 将下载的根证书文件复制到证书存储位置中。
- 重新运行你的代码。