webdriver.Chrome() :ERROR:ssl_client_socket_impl.cc(877)] handshake failed; returned -1, SSL error code 1, net_error -101
时间: 2025-07-05 08:47:43 浏览: 26
<think>嗯,用户遇到了使用Selenium时出现的SSL握手失败错误,错误信息是[30616:22540:0328/093748.004:ERROR:ssl_client_socket_impl.cc(992)] handshake failed; returned -1, SSL error code 1, net_error -100。我需要帮他解决这个问题。首先,我得回忆一下常见的SSL错误原因。可能的原因包括证书问题、浏览器版本与驱动不匹配、网络设置问题,或者SSL/TLS协议配置不当。
用户提到了使用webdriver.Chrome(),所以可能和ChromeDriver有关。首先,我应该建议他检查Chrome浏览器和ChromeDriver的版本是否兼容,这是常见的问题。如果版本不匹配,容易导致各种连接错误,包括SSL问题。然后,可以考虑忽略证书错误的选项,比如在ChromeOptions中添加--ignore-certificate-errors。这样可以绕过证书验证,但可能不安全,不过作为临时解决方案可行。
另外,用户提供的引用[2]里提到了设置网络条件,可能网络延迟或吞吐量设置不当也会影响连接,但不确定是否相关。不过SSL错误更可能和证书或协议有关。此外,用户的环境可能使用了代理,导致SSL握手失败,可以建议关闭代理或检查代理设置。
还有可能是系统时间不正确,导致证书有效期验证失败,这也是一个常见但容易被忽视的原因。此外,防火墙或杀毒软件有时会干扰SSL连接,暂时禁用它们可能有助于排查问题。
综合这些可能的原因,我需要分步骤给出解决方案:检查版本、添加选项忽略证书、禁用扩展、更新SSL库、检查系统时间、关闭代理、更新浏览器和驱动,以及可能的网络设置调整。最后,如果所有方法都无效,可能需要更详细的日志分析。</think>### 解决 `webdriver.Chrome` SSL握手失败的方法
您遇到的SSL握手失败错误(`net_error -100`或`-101`)通常与Chrome浏览器与目标网站的SSL/TLS协议协商失败有关。以下是逐步排查和解决方案:
---
#### **1. 检查ChromeDriver与浏览器版本兼容性**
- **问题根源**:ChromeDriver版本与本地安装的Chrome浏览器版本不匹配会导致SSL协议支持异常[^1]。
- **解决方法**:
1. 访问[ChromeDriver官网](https://chromedriver.chromium.org/downloads)下载与本地Chrome版本匹配的驱动。
2. 通过浏览器地址栏输入`chrome://version/`查看浏览器版本。
3. 替换旧版ChromeDriver并重启脚本。
---
#### **2. 添加ChromeOptions忽略证书错误**
- **问题根源**:目标网站的SSL证书可能过期或不受信任。
- **解决方法**:在初始化`webdriver.Chrome`时添加以下参数:
```python
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors') # 忽略证书错误
options.add_argument('--allow-insecure-localhost') # 允许本地不安全连接
driver = webdriver.Chrome(options=options)
```
此配置会跳过证书验证,但仅建议在测试环境使用[^2]。
---
#### **3. 禁用浏览器扩展和自动化控制标志**
- **问题根源**:某些扩展可能干扰SSL握手过程。
- **解决方法**:
```python
options.add_argument('--disable-extensions') # 禁用扩展
options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 隐藏自动化标志
```
---
#### **4. 更新系统SSL库**
- **问题根源**:操作系统或Python环境的SSL库过时。
- **解决方法**:
- 更新操作系统(如Ubuntu:`sudo apt-get update && sudo apt-get upgrade`)。
- 更新Python的`certifi`库:`pip install --upgrade certifi`。
---
#### **5. 检查系统时间和时区**
- **问题根源**:系统时间错误会导致证书有效期验证失败。
- **解决方法**:同步系统时间(Windows通过设置,Linux使用`ntpdate`)。
---
#### **6. 代理或防火墙干扰**
- **问题根源**:网络中间件(如公司代理)可能拦截SSL请求。
- **解决方法**:
```python
options.add_argument('--proxy-server="direct://"') # 强制直连
options.add_argument('--proxy-bypass-list=*') # 绕过所有代理
```
---
#### **7. 启用详细日志分析**
- **启用ChromeDriver日志**:
```python
service = webdriver.ChromeService(service_args=['--verbose', '--log-path=chromedriver.log'])
driver = webdriver.Chrome(service=service, options=options)
```
- 查看`chromedriver.log`中的`SSL_ERROR`字段定位具体协议错误。
---
#### **8. 降级浏览器版本(临时方案)**
如果问题仅出现在新版本Chrome,可暂时安装旧版本(如v115之前)并关闭自动更新。
---
### 其他建议
- 如果使用远程服务器,确保端口和防火墙规则允许HTTPS流量。
- 尝试重置Chrome网络设置:`options.add_argument('--disable-clear-browsing-data')`。
阅读全文
相关推荐




















