web-dev-qa-db-ja.com

エラー:ssl_client_socket_openssl.cc(1158)] ChromeDriver Chrome browser and Selenium

私のpython SeleniumスクリプトをChromeドライバで実行するとこれらのメッセージを抑制する方法は?

[24412:18772:0617/090708:ERROR:ssl_client_socket_openssl.cc(1158)]ハンドシェイクが失敗しました; -1、SSLエラーコード1、net_error -100を返しました

16

このエラーは、ブラウザーがWebサイトからの証明書を受け入れるように要求したときに表示されます。これらのエラーを回避するために、デフォルトでこれらのエラーを無視するように設定できます。

Chromeの場合、-ignore-certificate-errorsおよび-ignore-sslを追加する必要があります-errors 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)
11
sagar

私にとっては、chromeオプションで以下のようにコードを記述した後に解決されました。上記の回答からの変更は、spki-listを含めることでした。

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
driver = webdriver.Chrome(chrome_options=options)
2
MSY

このエラーメッセージ...

[ERROR:ssl_client_socket_openssl.cc(855)] handshake failed; returned -1, SSL error code 1, net_error -100

...ある時点でChromeDriverChrome Browserの間のハンドシェイクが失敗したことを意味します。

根本原因分析

このエラーは net :: SSLClientSocketImpl :: DoHandshake および net :: SSLClientSocketImplssl_client_socket_impl.cc net :: 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_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 主な問題はfailureofですChromeDriverの場合のハンドシェイクChromeでのSSLページとのハンドシェイクChromiumチームはSSLハンドシェイクのテストをnet_unittestscontent_tests、およびbrowser_testsを通じて行いましたが、そうではありませんでしたexhaustive。一部のユースケースは、上流のテストに依存して除外されています。

結論

このエラーはinteruptexecutionTest Suiteそして、この問題はChromiumチームによって修正されるまで当面は無視できます。

2
DebanjanB

私も同じ問題に直面していました。問題は、webdriver.chrome.driverシステムプロパティをchrome.exeに設定したことです。ただし、chromedriver.exeをダウンロードして、ファイルパスをwebdriver.chrome.driverシステムプロパティの値として設定する必要があります。

これが設定されると、すべてが正常に機能し始めました。