我在使用硒测试时收到此错误
[18912:1216:0116/175151.966:ERROR:ssl_client_socket_impl.cc(960)] handshake failed; returned -1, SSL error code 1, net_error -101
我现在的代码是
settings = {
'proxy':{
'https':'https://' + proxy
}
}
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
self.driver = webdriver.Chrome(seleniumwire_options=settings, chrome_options=options)
是否有其他方法可以忽略/解决此错误?
根据Chromium的命令行开关列表(适用于您的情况),您需要使用--ignore certificate errors spki list
作为webdriver选项参数。
您的代码片段选项。add_参数('--ignore certificate errors spki list')
以正确的方式实现了这一点(参见doc,分别是kignorecertificateerrorspkilist[]
的Chromium代码库)。有一点离题,不推荐使用--忽略证书错误
(如各种StackOverflow问题中所建议的)。
总之,一般来说,你的错误信息(见下文)
[18912:1216:0116/175151.966: ERROR:ssl_client_socket_impl.cc(960)]握手失败;返回-1, SSL错误代码1,net_error-101
推断Selenium ChromeDriver和Chrome浏览器之间的握手在执行过程中失败。如果我们看一下ssl\u client\u socket\u impl。cc
,我们可以看到SSLClientSocketImpl::DoHandshake()(这会导致您的错误):
int SSLClientSocketImpl::DoHandshake() {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
int rv = SSL_do_handshake(ssl_.get());
int net_error = OK;
if (rv <= 0) {
int ssl_error = SSL_get_error(ssl_.get(), rv);
if (ssl_error == SSL_ERROR_WANT_X509_LOOKUP && !send_client_cert_) {
return ERR_SSL_CLIENT_AUTH_CERT_NEEDED;
}
if (ssl_error == SSL_ERROR_WANT_PRIVATE_KEY_OPERATION) {
DCHECK(client_private_key_);
DCHECK_NE(kSSLClientSocketNoPendingResult, signature_result_);
next_handshake_state_ = STATE_HANDSHAKE;
return ERR_IO_PENDING;
}
if (ssl_error == SSL_ERROR_WANT_CERTIFICATE_VERIFY) {
DCHECK(cert_verifier_request_);
next_handshake_state_ = STATE_HANDSHAKE;
return ERR_IO_PENDING;
}
OpenSSLErrorInfo error_info;
net_error = MapLastOpenSSLError(ssl_error, err_tracer, &error_info);
if (net_error == ERR_IO_PENDING) {
// If not done, stay in this state
next_handshake_state_ = STATE_HANDSHAKE;
return ERR_IO_PENDING;
}
LOG(ERROR) << "handshake failed; returned " << rv << ", SSL error code "
<< ssl_error << ", net_error " << net_error;
NetLogOpenSSLError(net_log_, NetLogEventType::SSL_HANDSHAKE_ERROR,
net_error, ssl_error, error_info);
}
next_handshake_state_ = STATE_HANDSHAKE_COMPLETE;
return net_error;
}
如前所述,主要问题是握手失败——特别是当ChromeDriver请求与Chrome中的SSL页面握手时。开发团队知道这个错误(或者广义地说,它已经被多次报告)。
不幸的是,你无法修复这个错误!幸运的是,这个错误不会中断你的程序。如果你只为消息本身感到烦恼,可以通过选项压缩所有警告消息。添加参数('log-level=INT')
,而INT
可能是记录在案的日志级别之一:
日志级别:设置最低日志级别。有效值介于0到3之间:
INFO = 0,
WARNING = 1,
LOG_ERROR = 2,
LOG_FATAL = 3.
默认为0。
引自这个问题。
因此,您可以使用选项。添加_参数('log-level=3')
以抑制所有类型的信息、警告、错误或致命消息(可能建议对错误只使用级别2)。请记住,您不会看到任何其他可能导致生产混乱的错误相关消息!
我正在学习SSL通信,我遇到了这个问题。我正在编写一个简单的客户端,它试图与本地apache服务器握手。服务器启用https。我将服务器证书添加到所有可能的信任存储(jdk中的一个 注意:我从以下教程中获取了代码: http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#KRB 停留
我通过受ssl v3保护的cxf使用soap服务。我从服务器下载.cer文件,并通过keytool使用以下指令创建JKS文件: 在java代码中,我将此代码用于客户端配置: 对于调用此代码的服务: 当我运行代码时,会发生此错误: 我搜索此错误,我意识到该错误是针对不良信任存储的。但我不知道如何生成正确的信任库。
我正在对我们的数据库服务进行超文本传输协议请求的大循环。一切都很好,但是每当我运行它时,在成功查询(看似随机)数量后,我都会收到以下错误:
问题内容: 我正在尝试将Jenkins CI配置为对我们的项目执行持续集成,并且无法使其通过https连接到我们的SVN存储库。每当我尝试配置存储库URL并尝试连接时,都会遇到以下异常: 我在tomcat实例上启用了SSL调试(使用),并得到了以下信息: 我尝试按照这篇文章中的说明在tomcat中添加属性,但仍然出现相同的错误。 在这一点上,我对发生的事情完全感到困惑。不幸的是,我不是完全了解SS
问题内容: 我已经将证书导入到信任库中,但是仍然无法成功连接到该URL。我已经尝试了所有方法,任何人都可以看到输出并提供帮助吗? 无法弄清楚这是什么,应用程序正在使用java1.6,但是SSLPoke无法通过两种情况 问题答案: 我发现客户也进行了验证。因此它是2路身份验证。客户还必须将我的公共证书导入其密钥库。
问题内容: 我正在对branch.io进行以下调用 它在我的本地计算机上工作正常,但在服务器上失败。 OpenSSL版本: 本地:OpenSSL 0.9.8zg 2015年7月14日 伺服器:OpenSSL 0.9.8e-fips-rhel5 2008年7月1日 Python : 本地:2.7.10服务器:2.7.6 分支io服务器连接 : Chrome浏览器确认DigiCert SHA2 Sec