Selenium-ChromeDriver SSL 错误/握手失败

Selenium-ChromeDriver SSL error/handshake failed

提问人:eagerbeaver 提问时间:9/13/2016 最后编辑:Tengiseagerbeaver 更新时间:8/17/2023 访问量:10156

问:

我的脚本抛出大量SSL错误,如下所示:

[19852:2032:0912/202419:ERROR:ssl_client_socket_impl.cc(1141)] handshake failed;
 returned -1, SSL error code 1, net_error -100

[19852:2032:0912/202419:ERROR:ssl_client_socket_impl.cc(1141)] handshake failed;
 returned -1, SSL error code 1, net_error -100

一切正常,但错误不断循环并最终阻塞脚本,导致一切停止。

我试图抑制以下错误......但无济于事:

path_to_chromedriver = 'C:/Path/to/Chromedriver'
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
browser = webdriver.Chrome(chrome_options=options, executable_path = path_to_chromedriver)

我不确定错误是否在我上面的代码中,如果我应该添加一些不存在的东西,或者这些错误是否真的可以被抑制。

如果有帮助,这是一段直到几天前才运行良好的旧代码。有问题的网站添加了一些广告网络脚本,导致了一些SSL证书问题。

任何帮助表示赞赏。

python selenium ssl selenium-chromedriver

评论

0赞 Hoang Duc Nguyen 8/26/2019
在尝试自动测试我的 Angular 应用程序时,我遇到了类似的问题,这需要在外部域中唱歌。
0赞 Arif Garayev 3/14/2022
您是否有任何特定的“CA”证书来登录和监控页面?
0赞 Svj 11/9/2022
谁抛出了这个错误?Python 还是 Selenium?此外,请检查您的网络路由是否已更改(可能,您的流量现在通过代理服务器路由。可能是这个代理阻止了你)

答:

-1赞 Jie Yin 10/9/2020 #1

这是由于不安全的地址错误造成的。您可以通过添加“--ignore-certificate-errors”参数来忽略此情况。

以机器人框架-selenium为例:

Open Browser http://127.0.0.1/8000 Chrome executable_path=C:/path/to/chromedrive options=add_argument("--ignore-certificate-errors")

这将解决您遇到的问题。如果忽略此参数,则会出现“ERROR:ssl_client_socket_impl.cc”错误。

0赞 jericpo 1/24/2022 #2

您可以尝试使用这些包,下面是一个示例TrustManager

    SSLContext sslContext;
    TrustManager[] tmTrustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers()
                {
                    return null;
                }
                public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
                public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
            }
    };

    try {
        sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, tmTrustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
    }
    catch(Exception e) {
        System.out.println(e.getStackTrace());
    }

评论

0赞 Simas Joneliunas 1/27/2022
嗨,感谢您的回答。如果您能向我们解释您的代码如何以及为什么解决 OP 的问题,那就太好了,因为代码本身并不总是易于阅读。
0赞 edger02 10/31/2022 #3

将其从

browser = webdriver.Chrome(chrome_options=options, executable_path = path_to_chromedriver)

browser = webdriver.Chrome(executable_path = path_to_chromedriver, options=options)

这应该可以解决您的问题

0赞 ryaneatdinosaurs 3/19/2023 #4

发生此错误的原因有多种,可能是您的ChromeDriver和Chrome之间没有更新到最新版本,或者SSL证书可能无效/过期/不被客户端信任。

如果它仍然不起作用,那么禁用 QUIC 协议怎么样?

options = webdriver.ChromeOptions() 
options.add_argument("disable-quic")
browser = webdriver.Chrome(options=options)