在Chrome驱动程序中运行我的python selenium脚本时,每次加载页面时,我都会收到以下三条错误消息,尽管一切正常。有没有办法抑制这些消息?[24412:18772:0617/090708:错误:SSL客户端套接字打开SSL.cc(1158)]握手失败;返回-1,SSL错误代码1,net_error-100
x6492ojm1#
当浏览器要求您接受来自网站的证书时,您会收到此错误。您可以设置为默认忽略这些错误,以避免这些错误。对于Chrome,您需要添加***--忽略证书错误***和***--忽略ssl错误***ChromeOptions()参数:
options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors') options.add_argument('--ignore-ssl-errors') driver = webdriver.Chrome(chrome_options=options)
对于Firefox,您需要将***accept_untrusted_certs***FirefoxProfile()选项设置为True:
profile = webdriver.FirefoxProfile() profile.accept_untrusted_certs = True driver = webdriver.Firefox(firefox_profile=profile)
对于Internet Explorer,您需要设置***acceptSslCerts***所需的功能:
capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER capabilities['acceptSslCerts'] = True driver = webdriver.Ie(capabilities=capabilities)
7vhp5slm2#
此错误消息...
[ERROR:ssl_client_socket_openssl.cc(855)] handshake failed; returned -1, SSL error code 1, net_error -100
...表示 ChromeDriver 和 *Chrome浏览器 * 之间的握手失败在某个点失败。
产生此错误的原因是ssl_client_socket_impl.cc net::SSLClientSocketImpl::DoHandshake中实作的net::SSLClientSocketImpl::DoHandshake和net::SSLClientSocketImpl,如下所示:
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_CHANNEL_ID_LOOKUP) { // The server supports channel ID. Stop to look one up before returning to // the handshake. next_handshake_state_ = STATE_CHANNEL_ID_LOOKUP; return OK; } if (ssl_error == SSL_ERROR_WANT_X509_LOOKUP && !ssl_config_.send_client_cert) { return ERR_SSL_CLIENT_AUTH_CERT_NEEDED; } if (ssl_error == SSL_ERROR_WANT_PRIVATE_KEY_OPERATION) { DCHECK(ssl_config_.client_private_key); DCHECK_NE(kSSLClientSocketNoPendingResult, signature_result_); 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; net_log_.AddEvent( NetLogEventType::SSL_HANDSHAKE_ERROR, CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info)); } next_handshake_state_ = STATE_HANDSHAKE_COMPLETE; return net_error; }
根据ERROR:ssl_client_socket_openssl.cc handshake failed,主要问题是 ChromeDriver 与 Chrome 中的SSL页面握手时握手失败。尽管 Chromium 团队通过net_unittests、content_tests和browser_tests进行了 *SSL握手 * 测试,但并不是详尽。一些用例被排除在外,依赖于上游测试。结论此错误不会中断您的 * 测试套件 * 的执行,您可以暂时忽略此问题,直到 *Chromium团队 * 修复此问题。
net_unittests
content_tests
browser_tests
b4qexyjb3#
对我来说,它得到了解决后,编写代码如下在 chrome 选项,从上述答案的变化是包括spki列表。
options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors-spki-list') options.add_argument('--ignore-ssl-errors') driver = webdriver.Chrome(chrome_options=options)
ccrfmcuu4#
我也遇到了同样的问题。问题是我确实将webdriver.chrome.driver系统属性设置为chrome.exe。但是应该下载chromedriver.exe并将文件路径设置为webdriver.chrome.driver系统属性的值。一旦设置好,一切都开始正常工作。
webdriver.chrome.driver
chromedriver.exe
uemypmqf5#
ssl error意味着证书是错误的,你不应该允许执行或与使用错误ssl证书的网址通信。allow意味着你接受与虚假或小偷地址的通信,以及当你与他们通信时发生的任何事情。所以这不是浏览器的问题,或者你应该通过重新编程浏览器来修复的东西,以允许失败的ssl证书。
5条答案
按热度按时间x6492ojm1#
当浏览器要求您接受来自网站的证书时,您会收到此错误。您可以设置为默认忽略这些错误,以避免这些错误。
对于Chrome,您需要添加***--忽略证书错误***和***--忽略ssl错误***ChromeOptions()参数:
对于Firefox,您需要将***accept_untrusted_certs***FirefoxProfile()选项设置为True:
对于Internet Explorer,您需要设置***acceptSslCerts***所需的功能:
7vhp5slm2#
此错误消息...
...表示 ChromeDriver 和 *Chrome浏览器 * 之间的握手失败在某个点失败。
根本原因分析
产生此错误的原因是ssl_client_socket_impl.cc net::SSLClientSocketImpl::DoHandshake中实作的net::SSLClientSocketImpl::DoHandshake和net::SSLClientSocketImpl,如下所示:
根据ERROR:ssl_client_socket_openssl.cc handshake failed,主要问题是 ChromeDriver 与 Chrome 中的SSL页面握手时握手失败。尽管 Chromium 团队通过
net_unittests
、content_tests
和browser_tests
进行了 *SSL握手 * 测试,但并不是详尽。一些用例被排除在外,依赖于上游测试。结论
此错误不会中断您的 * 测试套件 * 的执行,您可以暂时忽略此问题,直到 *Chromium团队 * 修复此问题。
b4qexyjb3#
对我来说,它得到了解决后,编写代码如下在 chrome 选项,从上述答案的变化是包括spki列表。
ccrfmcuu4#
我也遇到了同样的问题。问题是我确实将
webdriver.chrome.driver
系统属性设置为chrome.exe。但是应该下载chromedriver.exe
并将文件路径设置为webdriver.chrome.driver
系统属性的值。一旦设置好,一切都开始正常工作。
uemypmqf5#
ssl error意味着证书是错误的,你不应该允许执行或与使用错误ssl证书的网址通信。allow意味着你接受与虚假或小偷地址的通信,以及当你与他们通信时发生的任何事情。所以这不是浏览器的问题,或者你应该通过重新编程浏览器来修复的东西,以允许失败的ssl证书。