selenium 出现SSL 协议错误(ERR_SSL_PROTOCOL_ERROR)

python脚本用Chrom打开指定网址baidu.com

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://www.baidu.com")

driver.quit()

报错

PS C:\Users\cui> 
                  > & "C:/Program Files/Python311/python.exe" "c:/Users/cui/Desktop/import os.py"

DevTools listening on ws://127.0.0.1:50476/devtools/browser/297ee3c6-848e-49e0-81ff-8f4fac267624
[18024:18884:0820/130804.313:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130804.355:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130805.145:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130805.206:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130806.208:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130806.220:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130807.134:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130807.136:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130808.109:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130808.112:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130809.025:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
[18024:18884:0820/130809.026:ERROR:ssl_client_socket_impl.cc(968)] handshake failed; returned -1, SSL error code 1, net_error -107
Traceback (most recent call last):
  File "c:\Users\Desktop\import os.py", line 7, in <module>
    driver.get("https://www.baidu.com")
  File "C:\Users\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\webdriver.py", line 354, in get
    self.execute(Command.GET, {"url": url})
  File "C:\Users\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\webdriver.py", line 345, in execute
    self.error_handler.check_response(response)
  File "C:\Users\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_SSL_PROTOCOL_ERROR
  (Session info: chrome=116.0.5845.97)
Stacktrace:
        GetHandleVerifier [0x00007FF6DDC552A2+57122]
        (No symbol) [0x00007FF6DDBCEA92]
        (No symbol) [0x00007FF6DDA9E3AB]
        (No symbol) [0x00007FF6DDA9A161]
        (No symbol) [0x00007FF6DDA8CADF]
        (No symbol) [0x00007FF6DDA8DE82]
        (No symbol) [0x00007FF6DDA8CEB8]
        (No symbol) [0x00007FF6DDA8BFBE]
        (No symbol) [0x00007FF6DDA8BF63]
        (No symbol) [0x00007FF6DDA8A9E5]
        (No symbol) [0x00007FF6DDA8B153]
        (No symbol) [0x00007FF6DDA9FF4B]
        (No symbol) [0x00007FF6DDB0EEF7]
        (No symbol) [0x00007FF6DDAF6FDA]
        (No symbol) [0x00007FF6DDB0EB82]
        (No symbol) [0x00007FF6DDAF6DB3]
        (No symbol) [0x00007FF6DDACD2B1]
        (No symbol) [0x00007FF6DDACE494]
        GetHandleVerifier [0x00007FF6DDEFEF82+2849794]
        GetHandleVerifier [0x00007FF6DDF51D24+3189156]
        GetHandleVerifier [0x00007FF6DDF4ACAF+3160367]
        GetHandleVerifier [0x00007FF6DDCE6D06+653702]
        (No symbol) [0x00007FF6DDBDA208]
        (No symbol) [0x00007FF6DDBD62C4]
        (No symbol) [0x00007FF6DDBD63F6]
        (No symbol) [0x00007FF6DDBC67A3]
        BaseThreadInitThunk [0x00007FFC56BC26AD+29]
        RtlUserThreadStart [0x00007FFC5804AA68+40]

虽然能正常运行,但这个SSL 协议错误(ERR_SSL_PROTOCOL_ERROR)是如何造成的,如何解决?

【以下回答由 GPT 生成】

问题回答:

这个错误通常是由于浏览器和目标网站之间的SSL握手失败引起的。有几种可能的解决方法,你可以尝试以下步骤来解决这个问题:

  1. 确保你使用的是最新版本的Chrome浏览器和selenium库。你可以通过以下代码获取Chrome浏览器的路径:
from selenium import webdriver
print(webdriver.Chrome())

你需要确保已经在你的计算机上安装了对应版本的Chrome浏览器。如果没有安装,请按照官方说明进行安装。

  1. 更新你的Chrome浏览器的证书。有时候浏览器的证书过期或损坏会导致SSL错误。你可以尝试以下步骤来更新证书:

  2. 打开Chrome浏览器并输入chrome://settings到地址栏,然后按回车键。

  3. 在设置页面的底部,点击"高级"。
  4. 在高级设置页面的"安全和隐私"部分,点击"管理证书"。
  5. 在打开的证书管理窗口中,点击"导入"按钮。
  6. 导入最新的根证书文件,你可以从证书颁发机构的网站上下载最新的根证书文件。
  7. 重新启动Chrome浏览器,再次尝试运行你的代码。

  8. 禁用Chrome浏览器的SSL错误警告。你可以通过以下代码来禁用SSL错误警告:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 创建ChromeOptions对象
chrome_options = Options()
# 禁用SSL错误警告
chrome_options.add_argument('--ignore-certificate-errors')

# 创建ChromeDriver对象,并传入ChromeOptions对象
driver = webdriver.Chrome(options=chrome_options)

driver.get("https://www.baidu.com")

driver.quit()

这个选项会忽略所有的SSL错误警告,包括证书错误和协议错误。但是请注意,这样做可能会降低安全性,因为浏览器将不再验证目标网站的证书有效性。

如果以上方法都不能解决问题,可能是因为目标网站本身在维护或配置错误,导致无法建立安全的SSL连接。在这种情况下,你可以尝试访问其他网站来验证你的代码是否能够正常工作。如果其他网站可以正常访问,那么问题可能出在目标网站上,你可以尝试联系网站管理员解决问题。

希望这些解决方法对你有帮助!如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^