提问人:eagerbeaver 提问时间:9/13/2016 最后编辑:Tengiseagerbeaver 更新时间:8/17/2023 访问量:10156
Selenium-ChromeDriver SSL 错误/握手失败
Selenium-ChromeDriver SSL error/handshake failed
问:
我的脚本抛出大量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证书问题。
任何帮助表示赞赏。
答:
-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)
评论